home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / CRS / crs49.d81 / hack6a.sfx / issue6a
Text File  |  1990-02-12  |  51KB  |  1,165 lines

  1.                    ########
  2.              ##################
  3.          ######            ######
  4.       #####
  5.     #####  ####  ####      ##      #####   ####  ####  ####  ####  ####   #####
  6.   #####    ##    ##      ####    ##   ##   ##  ###     ##    ####  ##   ##   ##
  7.  #####    ########     ##  ##   ##        #####       ##    ## ## ##   ##
  8. #####    ##    ##    ########  ##   ##   ##  ###     ##    ##  ####   ##   ##
  9. #####  ####  ####  ####  ####  #####   ####  ####  ####  ####  ####   ######
  10. #####                                                                    ##
  11.  ######            ######           ╔SSUE #6
  12.    ##################            ╙EPT. 5, 1993
  13.        ########
  14.  
  15. ---------------------------------------------------------------------(V1.0)---
  16. ┼DITOR'S ╬OTES:
  17. BY ├RAIG ╘AYLOR
  18.  
  19.   ╙CHOOL, 2 JOBS, A PLAY, AND OTHER WORK HAS SERIOUSLY RESTRICTED THE AMOUNT
  20.   OF TIME THAT ╔ AM ABLE TO DEVOTE TO ├OMMODORE ╚ACKING. ╫HAT ╔ AM LOOKING AT
  21.   DOING NOW IS TO STOP WRITING ARTICLES FOR ├OMMODORE ╚ACKING AND HOPING THAT
  22.   ╔'LL STILL HAVE ENOUGH TIME TO WRITE THESE NOTES, AND ORGANIZE AND PULL ALL
  23.   THE OTHER ARTICLES BY OTHER CONTRIBUTORS TOGETHER. ╘HE TWO ARTICLES ╔
  24.   HAD HOPED TO INCLUDE IN THIS ISSUE : THE ONE ABOUT MULTI-TASKING AND
  25.   ABOUT THE 1351 HAVE AGAIN BEEN DELAYED. ╔'VE DECIDED TO GO AHEAD AND
  26.   RELEASE ISSUE 6 AND HOPEFULLY WILL HAVE THEM IN THE NEXT ISSUE.
  27.   (╥EMEMBER: ┘OU GET WHAT YOU PAY FOR.. *SMILE*)
  28.  
  29.   ┴S ALWAYS, ├OMMODORE ╚ACKING IS CONSTANTLY LOOKING FOR ARTICLES, NOTES,
  30.   SHORT LITTLE PROGRAMS, WHAT-NOT ON ANY SIDE OF THE ├OMMODORE 64 AND 128 -
  31.   PRIMARILY ON THE TECHNICAL OR HARDWARE SIDE. ╔F YOU THINK YOU HAVE SOMETHING
  32.   IN MIND, OR ALREADY WRITTEN THEN FEEL FREE TO DROP ME A LINE LETTING ME
  33.   KNOW.
  34.  
  35.   ╔N REGARDS TO SEVERAL QUERIES RECENTLY ABOUT REPRINTING INDIVIDUAL ARTICLES
  36.   THAT HAVE APPEARED IN ├OMMODORE ╚ACKING. ┘OU MAY REPRINT ├OMMODORE ╚ACKING
  37.   AND REDISTRIBUTE IN WHOLE, FREELY. ╞OR USE OF INDIVIDUAL ARTICLES YOU _MUST_
  38.   CONTANCT THE INDIVIDUAL AUTHOR AS THEY STILL RETAIN RIGHTS TO IT. ╨LEASE SEE
  39.   THE LEGAL NOTICE / MUMBO BELOW.
  40.  
  41.   ╔ RECENTLY RECIEVED SOME MAIL FROM WOLFGANG@HALCYON REGARDING A DISK
  42.   MAGAZINE THAT HE WAS IN THE PROCESS OF STARTING AND HE HAS WRITTEN THE
  43.   FOLLOWING PREVIEW OF A DISK MAGAZINE THAT LOOKS TO BE EXCITING:
  44.  
  45.     "_╙CENERY_, A NEW DISK-MAGAZINE FOCUSING ON THE AMERICAN AND
  46.     EUROPEAN DEMO SCENES, WILL SOON BE AVAILABLE FOR DOWNLOAD AT A
  47.     SITE/┬┬╙ NEAR YOU! ╫ITH ARTICLES ON EVERYTHING FROM CODING TO
  48.     INSTRUMENT SYNTHESIS TO ART, _╙CENERY_ WILL BE THE DEFINITIVE WORD
  49.     WHEN IT COMES TO CREATING A DEMO, OR SIMPLY CODING IN GENERAL.
  50.     ┴RTICLES ARE BEING WRITTEN BY SOME OF THE TOP NAMES IN THE SCENE,
  51.     AND PROMISE TO HELP EVERYBODY FROM THE ┬ASIC ┬ABY TO THE ═╠ ═OGUL!
  52.     ╙ET TO BE RELEASED MID-┴UGUST, _╙CENERY_ WILL HOPEFULLY BE A WORTHY
  53.     EDITION TO THE LIKES OF ├ODER'S ╫ORLD AND ├=╚ACKING.  ╔ AM MAKING
  54.     THE MAGAZINE AVAILABLE ON VARIOUS ╔NTERNET SITES, SO LOOK FOR IT. ╫E
  55.     ARE ALWAYS ON THE LOOKOUT FOR ART, MUSIC, AND CODING TALENT, AND IF
  56.     YOU'D BE INTERESTED IN SUBMITTING AN ARTICLE FOR PUBLICATION, OR
  57.     SIMPLY HAVE A QUESTION OR COMMENT, PLEASE MAIL ME AT
  58.     'WOLFGANG@HALCYON.COM'. ╘HANKS.. AND SEE YOU ON THE ╬ET!"
  59.  
  60. ================================================================================
  61.  
  62.   ╨LEASE NOTE THAT THIS ISSUE AND PRIOR ONES ARE AVAILABLE VIA ANONYMOUS ╞╘╨
  63.   FROM CCOSUN.CALTECH.EDU UNDER PUB/RKNOP/HACKING.MAG AND VIA A MAILSERVER
  64.   WHICH DOCUMENTATION CAN BE OBTAINED BY SENDING MAIL TO
  65.   "DUCK@PEMBVAX1.PEMBROKE.EDU" WITH A SUBJECT LINE OF "MAILSERVER" AND THE
  66.   LINE "HELP" IN THE BODY OF THE MESSAGE.
  67.  
  68. ================================================================================
  69.  
  70.   ╬╧╘╔├┼: ╨ERMISSION IS GRANTED TO RE-DISTRUBTE THIS "NET-MAGAZINE", IN
  71.   WHOLE, FREELY FOR NON-PROFIT USE. ╚OWEVER, PLEASE CONTACT INDIVIDUAL 
  72.   AUTHORS FOR PERMISSION TO PUBLISH OR RE-DISTRIBUTE ARTICLES SEPERATELY.
  73.   ┴ CHARGE OF NO GREATHER THAN 5 ╒╙ DOLLARS OR EQUIVLENT MAY BE CHARGED FOR 
  74.   LIBRARY SERVICE / DISKETTE COSTS FOR THIS "NET-MAGAZINE".
  75.  
  76. ================================================================================
  77. ╔N ╘HIS ╔SSUE:
  78.  
  79. ─┘├╨ - ╚ORIZONTAL ╙CROLLING
  80.  
  81. ─┘├╨ - IS A NAME FOR A HORIZONTAL SCROLLER, WHERE CHARACTERS GO SMOOTHLY
  82. UP AND DOWN DURING THEIR VOYAGE FROM RIGHT TO LEFT. ╧NE POSSIBILITY IS A
  83. SCROLL WITH 8 CHARACTERS - ONE CHARACTER PER SPRITE, BUT A REAL DEMO CODER
  84. WON'T BE SATISFIED WITH THAT.
  85.  
  86. ╧PENING THE BORDERS
  87.  
  88. ╓╔├ HAS MANY FEATURES AND TRANSPARENT BORDERS ARE ONE OF THEM. ┘OU CAN NOT
  89. MAKE CHARACTERS APPEAR IN THE BORDER, BUT SPRITES ARE DISPLAYED IN THE
  90. BORDER TOO.
  91.  
  92. ┴ ╚EAVY ─UTY ╨OWER SUPPLY FOR THE ├-64
  93.  
  94. ╘HIS ARTICLE DESCRIBES HOW TO BUILD A HEAVIER DUTY POWER SUPPLY FOR YOUR
  95. ├OMMODORE 64 COMPUTER AND INCLUDES A FULL SCHEMATIC IN ╟EO╨AINT FORMAT.
  96.  
  97. ╠┌╫ ├OMPRESSION
  98.  
  99. ╠┌╫ IS PERHAPS THE MOST WIDELY USED FORM OF DATA COMPRESSION TODAY. ╔T
  100. IS SIMPLE TO IMPLEMENT AND ACHIEVES VERY DECENT COMPRESSION AT A FAIRLY
  101. QUICK PACE. ╠┌╫ IS USED IN ╨╦┌╔╨ (SHRINK),╨╦┴╥├ (CRUNCH), GIFS,╓.42BIS
  102. AND UNIX'S COMPRESS. ╘HIS ARTICLE WILL ATTEMPT TO EXPLAIN HOW THE
  103. COMPRESSION WORKS WITH A SHORT EXAMPLE AND 6502 SOURCE CODE IN ┬UDDY
  104. FORMAT.
  105.  
  106. ╘╚╥┼┼-╦┼┘ ╥╧╠╠╧╓┼╥ FOR THE ├-128 AND ├-64.
  107.  
  108. ╘HIS ARTICLE EXAMINES HOW A THREE-KEY ROLLOVER MECHANISM WORKS FOR THE
  109. KEYBOARDS OF THE ├=128 AND ├=64 AND WILL PRESENT ╦ERNAL-WEDGE
  110. IMPLEMENTATIONS FOR BOTH MACHINES. ╫EBSTER'S DOESN'T SEEM TO KNOW, SO ╔'LL
  111. TELL YOU THAT THIS MEANS THAT THE MACHINE WILL ACT SENSIBLY IF YOU ARE
  112. HOLDING DOWN ONE KEY AND THEN PRESS ANOTHER WITHOUT RELEASING THE FIRST.
  113. ╘HIS WILL BE USEFUL TO FAST TOUCH TYPERS.
  114.  
  115. ================================================================================
  116. ╘HE ─EMO ├ORNER: ─┘├╨ - ╚ORIZONTAL ╙CROLLING
  117. BY ╨ASI '┴LBERT' ╧JALA (PO87553@CS.TUT.FI OR ALBERT@CC.TUT.FI))
  118.         ╫RITTEN: 16-═AY-91 ╘RANSLATION 02-╩UN-92
  119.  
  120.         ─┘├╨ - TOO MANY SPRITES !?
  121.         --------------------------
  122.  
  123. ─┘├╨ - ─IFFERENT ┘ ├HARACTER ╨OSITION - IS A NAME FOR A HORIZONTAL SCROLLER,
  124. WHERE CHARACTERS GO SMOOTHLY UP AND DOWN DURING THEIR VOYAGE FROM RIGHT TO
  125. LEFT. ╧NE POSSIBILITY IS A SCROLL WITH 8 CHARACTERS - ONE CHARACTER IN EACH
  126. SPRITE, BUT A REAL DEMO CODER WON'T BE SATISFIED WITH THAT.
  127.  
  128. ─EMO CODERS THOUGHT THAT IT LOOKS GOOD TO MAKE THE SCROLLING TEXT CHANGE ITS
  129. VERTICAL POSITION IN THE SAME TIME IT PROCEEDED FROM THE RIGHT SIDE OF THE
  130. SCREEN TO THE LEFT. ╘HE ONLY PROBLEM IS THAT THERE IS ONLY EIGHT SPRITES
  131. AND THAT IS NOT EVEN NEARLY ENOUGH TO SATISFY THE REQUIREMENTS NEEDED FOR
  132. GREAT LOOK. ╙O THE ONLY WAY IS TO USE SCREEN AND SOMEHOW PLOT THE TEXT IN
  133. GRAPHICS, BECAUSE CHARACTER COLUMNS CAN NOT BE SCROLLED INDIVIDUALLY.
  134. ╨LOTTING THE CHARACTERS TAKE ABSOLUTELY TOO MUCH TIME, BECAUSE YOU HAVE TO
  135. HANDLE EACH BYTE SEPERATELY AND THE GRAPHICS BITMAP MUST BE CLEARED TOO.
  136.  
  137.  
  138. _├HARACTER HACK_
  139.  
  140. ╘HE WHOLE ─┘├╨ STARTED USING CHARACTER GRAPHICS. ┘OU PLOT SIX CHARACTER
  141. ROWS WHERE THE CHARACTER (SCREEN) CODES INCREASE TO THE RIGHT AND DOWN.
  142. ╘HIS AREA IS THEN USED LIKE A SMALL BITMAP SCREEN. ┼ACH OF THE TEXT CHARS
  143. ARE DISPLAYED ONE BYTE AT A TIME ON EACH SIX ROWS HIGH CHARACTER COLUMNS.
  144. ╘HIS 240 CHARACTER POSITIONS BIG PIECE OF SCREEN CAN BE MOVED HORIZONTALLY
  145. USING THE X-SCROLL REGISTER (THREE LOWEST BITS IN $─016) AND AFTER EIGHT
  146. PIXELS YOU MOVE THE TEXT ITSELF, LIKE IN ANY SCROLL. ╘HE SCREEN IS OF COURSE
  147. REDUCED TO 38 COLUMNS WIDE TO HIDE THE JITTERING ON THE SIDES.
  148.  
  149. ┴ GOOD CODER MAY ALSO CHANGE THE CHARACTER SETS DURING THE DISPLAY AND
  150. EVEN DOUBLE THE SIZE OF THE SCROLL, BUT BECAUSE THE RASTER TIME HAPPENS
  151. TO GO TO WASTE USING THIS TECHNIQUE ANYWAY, THAT IS NOT VERY FEASIBLE. ╘HERE
  152. ARE ALSO OTHER DIFFICULTIES IN THIS APPROACH, THE BIGGEST IS THE TIME NEEDED
  153. TO CLEAR THE DISPLAY.
  154.  
  155.  
  156. _╙AVE CHARACTERS - AND TIME_
  157.  
  158. ┬UT WHY SHOULD WE MOVE AN EIGHT-BYTE-HIGH CHARACTER IMAGE IN A 48-LINE-HIGH
  159. AREA, WHEN 16 IS REALLY ENOUGH ?  ╫E CAN USE TWO CHARACTERS FOR THE GRAPHICS
  160. BITMAP AND THEN MOVE THIS IN EIGHT PIXEL STEPS UP AND DOWN. ╘HE LOWEST
  161. THREE BITS OF THE Y-POSITION THEN GIVES US THE OFFSET WHERE THE DATA MUST
  162. BE PLOTTED INSIDE THIS GRAPHICAL REGION. ╘HE TWO CHARACTER CODES ARE USUALLY
  163. SELECTED TO BE CONSECUTIVE ONES SO THAT THE IMAGE DATA HAS ALSO 16
  164. CONSECUTIVE BYTES. [╙EE PICTURE 1.]
  165.  
  166.  
  167. _─EMO PROGRAM MIGHT CLEAR THINGS UP_
  168.  
  169. ╘HE DEMO PROGRAM IS CODED USING THE LATTER ALGORITHM. ╘HE PROGRAM FIRST
  170. COPIES THE ├HARACTER ╥╧═ TO RAM, BECAUSE IT IS FASTER TO USE IT FROM THERE.
  171. ┘OU CAN EASILY CHANGE THE PROGRAM TO USE YOUR OWN CHARACTER SET INSTEAD,
  172. IF YOU LIKE. ╘HE SINUS DATA FOR THE VERTICAL MOVEMENT IS CREATED OF A 1/4
  173. OF A CYCLE BY MIRRORING IT BOTH HORIZONTALLY AND VERTICALLY.
  174.  
  175. ╘WO MOST TIME CRITICAL PARTS ARE CLEARING THE CHARACTER SET AND PLOTTING THE
  176. NEW ONE. ╬EITHER OF THESE MAY HAPPEN WHEN ╓╔├ IS DRAWING THE AREA WHERE THE
  177. SCROLL IS, SO THERE IS A SLIGHT HURRY. ╒SING DOUBLE BUFFERING TECHNIQUE WE
  178. COULD OVERCOME THIS LIMITATION, BUT THIS IS JUST AN EXAMPLE PROGRAM. ╞OR
  179. SPEED THERE IS ├╠├ ONLY WHEN IT IS ABSOLUTELY NEEDED.
  180.  
  181. ╘HE ╬╘╙├ VERSION IS A BIT CRIPPLED, IT ONLY COVERS 32 COLUMNS AND THUS THE
  182. CHARACTERS SEEM TO APPEAR FROM THIN AIR. ┴NYWAY, THE IDEA SHOULD BECOME
  183. CLEAR.
  184.  
  185.  
  186. _╫ANT TO GO TO THE BORDER ?_
  187.  
  188. ╙OME CODERS ARE ALWAYS TRYING TO GET ALL EFFECTS EVER DONE USING THE ├64 GO
  189. TO THE BORDER, AND EVEN SUCCESSFULLY. ╘HE EASIEST WAY IS TO USE ONLY A REGION
  190. OF 21 PIXELS HIGH - SPRITES - AND MOVE THE TEXT EXACTLY LIKE IN CHARACTERS.
  191. ╔N FACT ONLY THE DIFFERENT ADDRESSING CAUSES THE DIFFERENCES IN THE CODE.
  192.  
  193. ┼IGHT HORIZONTALLY EXPANDED SPRITES WILL BE JUST ENOUGH TO FILL THE SIDE
  194. BORDERS. ┘OU CAN ALSO MIX THESE TECHIQUES, BUT THEN YOU HAVE THE USUAL
  195. "CHARS-IN-THE-SCREEN-WHILE-BORDER-OPENED"-PROBLEMS (HOWEVER, THEY ARE
  196. SOLVABLE). ╒NFORTUNATELY SPRITE-DYCP IS EVEN MORE SLOWER THAN CHAR-DYCP.
  197.  
  198.  
  199. _═ORE MOVEMENT VERTICALLY_
  200.  
  201. ┘OU MIGHT THINK THAT USING THE SPRITES WILL RESTRICT THE SINUS TO ONLY
  202. 14 PIXELS. ╬OT REALLY, THE ONLY RESTRICTION IS THAT THE VERTICAL POSITION
  203. DIFFERENCE BETWEEN THREE CONSEQUENT TEXT CHARACTER MUST BE LESS THAN 14
  204. PIXEL LINES. ┼ACH SPRITES' ┘-COORDINATE WILL BE THE MINIMUM OF THE THREE
  205. CHARACTERS RESIDING IN THAT SPRITE. ╠INE OFFSETS INSIDE THE SPRITES
  206. ARE THEN OBTAINED BY SUBTRACTING THE SPRITE Y-COORDINATE FROM THE CHARACTER
  207. Y-COORDINATE. ═AYBE A LITTLE HARD TO FOLLOW, BUT MAYBE A PICTURE WILL
  208. CLEAR THE SITUATION. [╙EE PICTURE 2.]
  209.  
  210. ╙CROLLING HORIZONTALLY IS EASY. ┘OU JUST HAVE TO MOVE SPRITES LIKE YOU WOULD
  211. USE THE CHARACTER HORIZONTAL SCROLL REGISTER AND AFTER EIGHT PIXELS YOU
  212. RESET THE SPRITE POSITIONS AND SCROLL THE TEXT ONE POSITION IN MEMORY.
  213. ┴ND OF COURSE, YOU FETCH A NEW CHARACTER FOR THE SCROLL. ╫HEN WE HAVE
  214. DIFFERENT AND CHANGING SPRITE Y-COORDINATES, OPENING THE SIDE BORDERS BECOME
  215. A GREAT DEAL MORE DIFFICULT. ╚OWEVER, IN THIS CASE THERE IS AT LEAST TWO
  216. DIFFERENT WAYS TO DO IT.
  217.  
  218.  
  219. _╙TRETCH THE SPRITES_
  220.  
  221. ╘HE EASIEST WAY IS TO POSITION ALL OF THE SPRITES WHERE THE SCROLL WILL
  222. BE WHEN IT IS IN ITS HIGHEST POSITION. ╘HEN STRETCH THE FIRST AND LAST LINE
  223. OF EACH SPRITE SO THAT THE 19 SPRITE LINES IN THE MIDDLE WILL BE ON THE
  224. DESIRED PLACE. ╧PENING THE BORDERS NOW IS TRIVIAL, BECAUSE ALL OF THE SPRITES
  225. ARE PRESENT ON ALL OF THE SCAN LINES AND THEY STEAL A CONSTANT AMOUNT OF
  226. TIME. ╚OWEVER, WE LOSE TWO SPRITE LINES. ╫E MIGHT NOT WANT TO USE THE FIRST
  227. AND THE LAST LINE FOR GRAPHICS, BECAUSE THEY ARE STRETCHED.
  228. [╙EE PREVIOUS ├=╚ACKING ╔SSUES FOR MORE INFORMATION ABOUT STRETCHING AND
  229.  STOLEN CYCLES.]
  230.  
  231. ┴ MORE DIFFICULT APPROACH IS TO UNROLL THE ROUTINE AND LET ANOTHER ROUTINE
  232. COUNT THE SPRITES PRESENT IN EACH LINE AND THEN CHANGE THE TIME THE ROUTINE
  233. USES ACCORDINGLY. ╔N THIS WAY YOU SAVE TIME DURING THE DISPLAY FOR OTHER
  234. EFFECTS, LIKE COLOR BARS, BECAUSE STRETCHING WILL TAKE AT LEAST 12 CYCLES
  235. ON EACH RASTER LINE. ╧N THE OTHER HAND, IF THE SINUS IS CONSTANT (USER IS
  236. NOT ALLOWED TO CHANGE IT), IT IS USUALLY POSSIBLE TO EMBEDD THE COUNT
  237. ROUTINE DIRECTLY TO THE BORDER OPENING PART OF THE ROUTINE.
  238.  
  239.  
  240. _═ORE SPRITES_
  241.  
  242. ┘OU DON'T NECASSARILY NEED TO PLOT THE CHARACTERS IN SPRITES TO HAVE MORE
  243. THAN EIGHT CHARACTERS. ╒SING A SPRITE MULTIPLEXING TECHIQUES YOU CAN DOUBLE
  244. OR TRIPLE THE NUMBER OF SPRITES AVAILABLE. ┘OU CAN DIVIDE THE SCROLL
  245. VERTICALLY INTO SEVERAL AREAS AND BECAUSE THE Y-COORDINATE OF THE SCROLL
  246. IS A SINUS, THERE ALWAYS IS A FIXED MAXIMUM NUMBER OF SPRITES IN EACH AREA.
  247. ╘HIS NUMBER IS ALWAYS SMALLER THAN THE TOTAL NUMBER OF SPRITES IN THE
  248. WHOLE SCROLL. ╔ WON'T GO INTO DETAIL, BUT DIDN'T WANT TO LEAVE THIS OUT
  249. COMPLETELY. [╙EE PICTURE 3.]
  250.  
  251.  
  252. _╙MOOTHER AND SMOOTHER_
  253.  
  254. ╫HY BE SATISFIED WITH A SCROLL WITH ONLY 40 DIFFERENT SLICES HORIZONTALLY ?
  255. ╔T SHOULD BE POSSIBLE TO COUNT OWN COORDINATES FOR EACH PIXEL COLUMN ON
  256. THE SCROLL. ╔N FACT THE PROGRAM WON'T BE MUCH DIFFERENT, BUT THE ROUTINE
  257. MUST ALSO MASK THE UNWANTED BITS AND WRITE THE BYTE TO MEMORY WITH ╧╥┴+╙╘┴.
  258. ╫HEN YOU THINK ABOUT IT MORE, IT IS OBVIOUS THAT THIS TAKES A GENEROUS AMOUNT
  259. OF TIME, HANDLING EVERY BIT SEPERATELY WILL TAKE MUCH MORE THAN EIGHT TIMES
  260. THE TIME A SIMPLE ╠─┴+╙╘┴ TAKES. ╙OME CODERS HAVE AVOIDED THIS BY PLOTTING
  261. THE SAME CHARACTER TO DIFFERENT CHARACTER SETS SIMULTANEOUSLY AND THEN
  262. CHANGING THE CHARSETS APPROPRIATELY, BUT THE RESULTING SCROLL WON'T BE MUCH
  263. LARGER THAN 96X32 PIXELS.
  264.  
  265. --------------------------------------------------------------------------
  266. ╨ICTURE 1 - ╘WO CHARACTER CODES WILL MAKE A GRAPHICAL BITMAP
  267.  
  268. ╙CREEN MEMORY:
  269.  ____________________________________
  270. ▄├HAR   ▄├HAR   ▄├HAR   ▄├HAR   ▄  ...
  271. ▄├ODE   ▄├ODE   ▄├ODE   ▄├ODE   ▄
  272. ▄0      ▄2      ▄80     ▄80     ▄ .
  273. ▄       ▄**  ** ▄       ▄       ▄ .
  274. ▄       ▄**  ** ▄       ▄       ▄ .
  275. ▄*****  ▄****** ▄       ▄       ▄
  276. ▄****** ▄ ****  ▄       ▄       ▄
  277. ▄**__**_▄__**___▄_______▄_______▄
  278. ▄**  ** ▄  **   ▄ ****  ▄├HAR   ▄
  279. ▄**  ** ▄  **   ▄****** ▄├ODE   ▄
  280. ▄****** ▄       ▄**  ** ▄6      ▄
  281. ▄*****  ▄       ▄**     ▄       ▄
  282. ▄├HAR   ▄├HAR   ▄**  ** ▄       ▄
  283. ▄├ODE   ▄├ODE   ▄****** ▄       ▄
  284. ▄1      ▄3      ▄4****  ▄*****  ▄
  285. ▄_______▄_______▄_______▄******_▄
  286. ▄├HAR   ▄├HAR   ▄       ▄**  ** ▄
  287. ▄├ODE   ▄├ODE   ▄       ▄****** ▄
  288. ▄80     ▄80     ▄       ▄*****  ▄
  289. ▄       ▄       ▄       ▄**     ▄
  290. ▄       ▄       ▄├HAR   ▄**AR   ▄
  291. ▄       ▄       ▄├ODE   ▄├ODE   ▄
  292. ▄       ▄       ▄5      ▄7      ▄
  293. ▄_______▄_______▄_______▄_______▄
  294.  
  295. ├HARACTER SET MEMORY:
  296.  
  297.  _________________________________________________________________
  298. ▄├HAR 0 ▄├HAR 1 ▄├HAR 2 ▄├HAR 3 ▄├HAR 4 ▄├HAR 5 ▄├HAR 6 ▄├HAR 7 ▄ ...
  299. ▄_______▄_______▄_______▄_______▄_______▄_______▄_______▄_______▄__
  300.       ────────      ┘┘┘┘┘┘┘┘     ├├├├├├├├              ╨╨╨╨╨╨╨╨
  301.  ╞IRST COLUMN    ╙ECOND COLUMN   ╘HIRD COLUMN    ╞OURTH COLUMN
  302.  
  303. --------------------------------------------------------------------------
  304. ╨ICTURE 2 - ─┘├╨ WITH SPRITES
  305.  
  306. ╙PRITE 0
  307.  _______________________
  308. ▄       ▄**  ** ▄       ▄
  309. ▄       ▄**  ** ▄       ▄
  310. ▄       ▄****** ▄       ▄
  311. ▄*****  ▄ ****  ▄       ▄
  312. ▄****** ▄  **   ▄       ▄
  313. ▄**  ** ▄  **   ▄       ▄
  314. ▄**  ** ▄  **   ▄       ▄
  315. ▄**__**_▄_______▄_______▄
  316. ▄****** ▄       ▄ ****  ▄
  317. ▄*****  ▄       ▄****** ▄
  318. ▄       ▄       ▄**  ** ▄
  319. ▄       ▄       ▄**     ▄
  320. ▄       ▄       ▄**  ** ▄
  321. ▄       ▄       ▄****** ▄
  322. ▄       ▄       ▄ ****  ▄
  323. ▄_______▄_______▄_______▄ ╙PRITE 1
  324. ▄       ▄       ▄       ▄ _______________________
  325. ▄       ▄       ▄       ▄▄*****  ▄       ▄       ▄
  326. ▄       ▄       ▄       ▄▄****** ▄       ▄       ▄
  327. ▄       ▄       ▄       ▄▄**  ** ▄       ▄       ▄
  328. ▄_______▄_______▄_______▄▄****** ▄       ▄       ▄
  329.                          ▄*****  ▄       ▄       ▄
  330.                          ▄**     ▄       ▄       ▄
  331.                          ▄**     ▄       ▄       ▄
  332.                          ▄_______▄_______▄_______▄
  333.                          ▄       ▄       ▄       ▄
  334.                          ▄       ▄       ▄       ▄
  335.                          ▄       ▄       ▄       ▄
  336.                          ▄       ▄ ****  ▄       ▄
  337.                          ▄       ▄ ****  ▄       ▄
  338.                          ▄       ▄       ▄****** ▄
  339.                          ▄       ▄       ▄****** ▄
  340.                          ▄_______▄_______▄__**___▄
  341.                          ▄       ▄       ▄  **   ▄
  342.                          ▄       ▄       ▄  **   ▄
  343.                          ▄       ▄       ▄  **   ▄
  344.                          ▄       ▄       ▄  **   ▄
  345.                          ▄_______▄_______▄_______▄
  346.  
  347. --------------------------------------------------------------------------
  348. ╨ICTURE 3 - ╙PRITE MULTIPLEXING
  349.  
  350.                                __          ╙ET COORDINATES FOR EIGHT SPRITES
  351.                             __▄3 ▄         THAT START FROM THE TOP HALF.
  352.                            ▄4 ▄  ▄__
  353.                          __▄  └--▄2 ▄
  354.                         ▄5 └--'  ▄  ▄
  355.                         ▄  ▄     └--'__
  356.                         └--'        ▄1 ▄
  357.                                     ▄  ▄
  358.                       __            └--'
  359.                      ▄6 ▄
  360.                      ▄  ▄               __
  361.                      └--'              ▄0 ▄
  362.                                        ▄  ▄
  363. -__------------------------------------└--'╫HEN ╓╔├ HAS DISPLAYED THE LAST
  364. ▄0 ▄               __                      SPRITE, SET COORDINATES FOR THE
  365. ▄  ▄              ▄6 ▄                     SPRITES IN THE LOWER HALF OF THE
  366. └--'              ▄  ▄                     AREA.
  367.                   └--'
  368.     __
  369.    ▄1 ▄         __
  370.    ▄  ▄        ▄5 ▄
  371.    └-- __      ▄  ▄
  372.       ▄2 ▄   __└--'
  373.       ▄  ▄__▄4 ▄                           ┘OU USUALLY HAVE TWO SPRITES THAT
  374.       └--▄3 ▄  ▄                           ARE ONLY 'USED' ONCE SO THAT YOU
  375.          ▄  └--'                           CAN CHANGE OTHER SPRITES WHEN ╓╔├
  376.          └__'                              IS DISPLAYING THEM.
  377. --------------------------------------------------------------------------
  378.  
  379. ─┘├╨ DEMO PROGRAM (╨┴╠)
  380.  
  381.  
  382. ╙╔╬╒╙=  $├╞00   ; ╨LACE FOR THE SINUS TABLE
  383. ├╚╥╙┼╘= $3800   ; ╚ERE BEGINS THE CHARACTER SET MEMORY
  384. ╟╞╪=    $3├00   ; ╚ERE WE PLOT THE DYCP DATA
  385. ╪16=    $├┼00   ; VALUES MULTIPLICATED BY 16 (0,16,32..)
  386. ─16=    $├┼30   ; DIVIDED BY 16  (16 X 0,16 X 1 ...)
  387. ╙╘┴╥╘=  $033├   ; ╨OINTER TO THE START OF THE SINUS
  388. ├╧╒╬╘┼╥= $033─  ; ╙CROLL COUNTER (X-SCROLL REGISTER)
  389. ╨╧╔╬╘┼╥= $033┼  ; ╨OINTER TO THE TEXT CHAR
  390. ┘╨╧╙=   $0340   ; ╠OWER 4 BITS OF THE CHARACTER Y POSITIONS
  391. ┘╨╧╙╚=  $0368   ; Y POSITIONS DIVIDED BY 16
  392. ├╚┴╥=   $0390   ; ╙CROLL TEXT CHARACTERS, MULTIPLICATED BY EIGHT
  393. ┌╨=     $╞┬     ; ┌EROPAGE AREA FOR INDIRECT ADDRESSING
  394. ┌╨2=    $╞─
  395. ┴═╧╒╬╘= 38      ; ┴MOUNT OF CHARS TO PLOT-1
  396. ╨┴─├╚┴╥= 32     ; ├ODE USED FOR CLEARING THE SCREEN
  397.  
  398. *= $├000
  399.  
  400.         ╙┼╔             ; ─ISABLE INTERRUPTS
  401.         ╠─┴ #$32        ; ├HARACTER GENERATOR ╥╧═ TO ADDRESS SPACE
  402.         ╙╘┴ $01
  403.         ╠─╪ #0
  404. ╠╧╧╨0   ╠─┴ $─000,╪     ; ├OPY THE CHARACTER SET
  405.         ╙╘┴ ├╚╥╙┼╘,╪
  406.         ╠─┴ $─100,╪
  407.         ╙╘┴ ├╚╥╙┼╘+256,╪
  408.         ─┼╪
  409.         ┬╬┼ ╠╧╧╨0
  410.         ╠─┴ #$37        ; ╬ORMAL MEMORY CONFIGURATION
  411.         ╙╘┴ $01
  412.         ╠─┘ #31
  413. ╠╧╧╨1   ╠─┴ #66         ; ├OMPOSE A FULL SINUS FROM A 1/4TH OF A
  414.         ├╠├             ;   CYCLE
  415.         ┴─├ ╙╔╬,╪
  416.         ╙╘┴ ╙╔╬╒╙,╪
  417.         ╙╘┴ ╙╔╬╒╙+32,┘
  418.         ╠─┴ #64
  419.         ╙┼├
  420.         ╙┬├ ╙╔╬,╪
  421.         ╙╘┴ ╙╔╬╒╙+64,╪
  422.         ╙╘┴ ╙╔╬╒╙+96,┘
  423.         ╔╬╪
  424.         ─┼┘
  425.         ┬╨╠ ╠╧╧╨1
  426.         ╠─╪ #$7╞
  427. ╠╧╧╨2   ╠─┴ ╙╔╬╒╙,╪
  428.         ╠╙╥
  429.         ├╠├
  430.         ┴─├ #32
  431.         ╙╘┴ ╙╔╬╒╙+128,╪
  432.         ─┼╪
  433.         ┬╨╠ ╠╧╧╨2
  434.  
  435.         ╠─╪ #39
  436. ╠╧╧╨3   ╘╪┴
  437.         ┴╙╠
  438.         ┴╙╠
  439.         ┴╙╠
  440.         ┴╙╠
  441.         ╙╘┴ ╪16,╪       ; ═ULTIPLICATION TABLE (FOR SPEED)
  442.         ╘╪┴
  443.         ╠╙╥
  444.         ╠╙╥
  445.         ╠╙╥
  446.         ╠╙╥
  447.         ├╠├
  448.         ┴─├ #>╟╞╪
  449.         ╙╘┴ ─16,╪       ; ─IVIDING TABLE
  450.         ╠─┴ #0
  451.         ╙╘┴ ├╚┴╥,╪      ; ├LEAR THE SCROLL
  452.         ─┼╪
  453.         ┬╨╠ ╠╧╧╨3
  454.         ╙╘┴ ╨╧╔╬╘┼╥     ; ╔NITIALIZE THE SCROLL POINTER
  455.         ╠─╪ #7
  456.         ╙╘╪ ├╧╒╬╘┼╥
  457. ╠╧╧╨10  ╙╘┴ ├╚╥╙┼╘,╪    ; ├LEAR THE @-SIGN..
  458.         ─┼╪
  459.         ┬╨╠ ╠╧╧╨10
  460.  
  461.         ╠─┴ #>├╚╥╙┼╘    ; ╘HE RIGHT PAGE FOR ADDRESSING
  462.         ╙╘┴ ┌╨2+1
  463.         ╠─┴ #<╔╥╤       ; ╧UR INTERRUPT HANDLER ADDRESS
  464.         ╙╘┴ $0314
  465.         ╠─┴ #>╔╥╤
  466.         ╙╘┴ $0315
  467.         ╠─┴ #$7╞        ; ─ISABLE TIMER INTERRUPTS
  468.         ╙╘┴ $─├0─
  469.         ╠─┴ #$81        ; ┼NABLE RASTER INTERRUPTS
  470.         ╙╘┴ $─01┴
  471.         ╠─┴ #$┴8        ; ╥ASTER COMPARE TO SCAN LINE $┴8
  472.         ╙╘┴ $─012
  473.         ╠─┴ #$1┬        ; 9TH BIT
  474.         ╙╘┴ $─011
  475.         ╠─┴ #30
  476.         ╙╘┴ $─018       ; ╒SE THE NEW CHARSET
  477.         ├╠╔             ; ┼NABLE INTERRUPTS AND RETURN
  478.         ╥╘╙
  479.  
  480. ╔╥╤     ╔╬├ ╙╘┴╥╘       ; ╔NCREASE COUNTER
  481.         ╠─┘ #┴═╧╒╬╘
  482.         ╠─╪ ╙╘┴╥╘
  483. ╠╧╧╨4   ╠─┴ ╙╔╬╒╙,╪     ; ├OUNT A POINTER FOR EACH TEXT CHAR AND ACCORDING
  484.         ┴╬─ #7          ;  TO IT FETCH A Y-POSITION FROM THE SINUS TABLE
  485.         ╙╘┴ ┘╨╧╙,┘      ;   ╘HEN DIVIDE IT TO TWO BYTES
  486.         ╠─┴ ╙╔╬╒╙,╪
  487.         ╠╙╥
  488.         ╠╙╥
  489.         ╠╙╥
  490.         ╙╘┴ ┘╨╧╙╚,┘
  491.         ╔╬╪             ; ├HARS ARE TWO POSITIONS APART
  492.         ╔╬╪
  493.         ─┼┘
  494.         ┬╨╠ ╠╧╧╨4
  495.  
  496.         ╠─┴ #0
  497.         ╠─╪ #79
  498. ╠╧╧╨11  ╙╘┴ ╟╞╪,╪       ; ├LEAR THE DYCP DATA
  499.         ╙╘┴ ╟╞╪+80,╪
  500.         ╙╘┴ ╟╞╪+160,╪
  501.         ╙╘┴ ╟╞╪+240,╪
  502.         ╙╘┴ ╟╞╪+320,╪
  503.         ╙╘┴ ╟╞╪+400,╪
  504.         ╙╘┴ ╟╞╪+480,╪
  505.         ╙╘┴ ╟╞╪+560,╪
  506.         ─┼╪
  507.         ┬╨╠ ╠╧╧╨11
  508.  
  509. ═┴╦┼    ╠─┴ ├╧╒╬╘┼╥     ; ╙ET X-SCROLL REGISTER
  510.         ╙╘┴ $─016
  511.         ╠─╪ #┴═╧╒╬╘
  512.         ├╠├             ; ├LEAR CARRY
  513. ╠╧╧╨5   ╠─┘ ┘╨╧╙╚,╪     ; ─ETERMINE THE POSITION IN VIDEO MATRIX
  514.         ╘╪┴
  515.         ┴─├ ╠╔╬┼╙╠,┘    ; ├ARRY WON'T BE SET HERE
  516.         ╙╘┴ ┌╨          ; LOW BYTE
  517.         ╠─┴ #4
  518.         ┴─├ ╠╔╬┼╙╚,┘
  519.         ╙╘┴ ┌╨+1        ; HIGH BYTE
  520.         ╠─┴ #╨┴─├╚┴╥    ; ╞IRST CLEAR ABOVE AND BELOW THE CHAR
  521.         ╠─┘ #0          ; 0. ROW
  522.         ╙╘┴ (┌╨),┘
  523.         ╠─┘ #120        ; 3. ROW
  524.         ╙╘┴ (┌╨),┘
  525.         ╘╪┴             ; ╘HEN PUT CONSECUENT CHARACTER CODES TO THE PLACES
  526.         ┴╙╠             ;  ├ARRY WILL BE CLEARED
  527.         ╧╥┴ #$80        ; ╔NVERTED CHARS
  528.         ╠─┘ #40         ; 1. ROW
  529.         ╙╘┴ (┌╨),┘
  530.         ┴─├ #1          ; ╔NCREASE THE CHARACTER CODE, ├ARRY WON'T BE SET
  531.         ╠─┘ #80         ; 2. ROW
  532.         ╙╘┴ (┌╨),┘
  533.  
  534.         ╠─┴ ├╚┴╥,╪      ; ╫HAT CHARACTER TO PLOT ? (SOURCE)
  535.         ╙╘┴ ┌╨2         ;  (CHAR IS ALREADY MULTIPLICATED BY EIGHT)
  536.         ╠─┴ ╪16,╪       ; ─ESTINATION LOW BYTE
  537.         ┴─├ ┘╨╧╙,╪      ;  (16*CHAR CODE + Y-POSITION'S 3 LOWEST BITS)
  538.         ╙╘┴ ┌╨
  539.         ╠─┴ ─16,╪       ; ─ESTINATION HIGH BYTE
  540.         ╙╘┴ ┌╨+1
  541.  
  542.         ╠─┘ #6          ; ╘RANSFER 7 BYTES FROM SOURCE TO DESTINATION
  543.         ╠─┴ (┌╨2),┘ : ╙╘┴ (┌╨),┘
  544.         ─┼┘             ; ╘HIS IS THE FASTEST WAY ╔ COULD THINK OF.
  545.         ╠─┴ (┌╨2),┘ : ╙╘┴ (┌╨),┘
  546.         ─┼┘
  547.         ╠─┴ (┌╨2),┘ : ╙╘┴ (┌╨),┘
  548.         ─┼┘
  549.         ╠─┴ (┌╨2),┘ : ╙╘┴ (┌╨),┘
  550.         ─┼┘
  551.         ╠─┴ (┌╨2),┘ : ╙╘┴ (┌╨),┘
  552.         ─┼┘
  553.         ╠─┴ (┌╨2),┘ : ╙╘┴ (┌╨),┘
  554.         ─┼┘
  555.         ╠─┴ (┌╨2),┘ : ╙╘┴ (┌╨),┘
  556.         ─┼╪
  557.         ┬╨╠ ╠╧╧╨5       ; ╟ET NEXT CHAR IN SCROLL
  558.  
  559.         ╠─┴ #1
  560.         ╙╘┴ $─019       ; ┴CKNOWLEDGE RASTER INTERRUPT
  561.  
  562.         ─┼├ ├╧╒╬╘┼╥     ; ─ECREASE THE COUNTER = MOVE THE SCROLL BY 1 PIXEL
  563.         ┬╨╠ ╧╒╘
  564. ╠╧╧╨12  ╠─┴ ├╚┴╥+1,┘    ; ═OVE THE TEXT ONE POSITION TO THE LEFT
  565.         ╙╘┴ ├╚┴╥,┘      ;  (┘-REGISTER IS INITIALLY ZERO)
  566.         ╔╬┘
  567.         ├╨┘ #┴═╧╒╬╘
  568.         ┬╬┼ ╠╧╧╨12
  569.         ╠─┴ ╨╧╔╬╘┼╥
  570.         ┴╬─ #63         ; ╘EXT IS 64 BYTES LONG
  571.         ╘┴╪
  572.         ╠─┴ ╙├╥╧╠╠,╪    ; ╠OAD A NEW CHAR AND MULTIPLY IT BY EIGHT
  573.         ┴╙╠
  574.         ┴╙╠
  575.         ┴╙╠
  576.         ╙╘┴ ├╚┴╥+┴═╧╒╬╘ ; ╙AVE IT TO THE RIGHT SIDE
  577.         ─┼├ ╙╘┴╥╘       ; ├OMPENSATION FOR THE TEXT SCROLLING
  578.         ─┼├ ╙╘┴╥╘
  579.         ╔╬├ ╨╧╔╬╘┼╥     ; ╔NCREASE THE TEXT POINTER
  580.         ╠─┴ #7
  581.         ╙╘┴ ├╧╒╬╘┼╥     ; ╔NITIALIZE ╪-SCROLL
  582.  
  583. ╧╒╘     ╩═╨ $┼┴7┼       ; ╥ETURN FROM INTERRUPT
  584.  
  585. ╙╔╬     ┬┘╘ 0,3,6,9,12,15,18,21,24,27,30,32,35,38,40,42,45
  586.         ┬┘╘ 47,49,51,53,54,56,57,59,60,61,62,62,63,63,63
  587.                         ; 1/4 OF THE SINUS
  588.  
  589. ╠╔╬┼╙╠  ┬┘╘ 0,40,80,120,160,200,240,24,64,104,144,184,224
  590.         ┬┘╘ 8,48,88,128,168,208,248,32
  591.  
  592. ╠╔╬┼╙╚  ┬┘╘ 0,0,0,0,0,0,0,1,1,1,1,1,1,2,2,2,2,2,2,2,3
  593.  
  594. ╙├╥╧╠╠  ╙├╥ "╘╚╔╙@╔╙@┴╬@┼╪┴═╨╠┼@╙├╥╧╠╠@╞╧╥@"
  595.         ╙├╥ "├╧══╧─╧╥┼@═┴╟┴┌╔╬┼@┬┘@╨┴╙╔@╧╩┴╠┴@@"
  596.                         ; ╙├╥ WILL CONVERT TEXT TO SCREEN CODES
  597.  
  598. --------------------------------------------------------------------------
  599. ┬ASIC LOADER FOR THE ─YCP DEMO PROGRAM (╨┴╠)
  600.  
  601. 1 ╙=49152
  602. 2 ─┼╞╞╬╚(├)=├-48+7*(├>64)
  603. 3 ├╚=0:╥┼┴─┴$,┴:╨╥╔╬╘┴$:╔╞┴$="┼╬─"╘╚┼╬╨╥╔╬╘"<WHITE><CLR>":╙┘╙49152:┼╬─
  604. 4 ╞╧╥╞=0╘╧31:╤=╞╬╚(┴╙├(═╔─$(┴$,╞*2+1)))*16+╞╬╚(┴╙├(═╔─$(┴$,╞*2+2)))
  605. 5 ├╚=├╚+╤:╨╧╦┼╙,╤:╙=╙+1:╬┼╪╘:╔╞├╚=┴╘╚┼╬3
  606. 6 ╨╥╔╬╘"├╚┼├╦╙╒═ ┼╥╥╧╥":┼╬─
  607. 100 ─┴╘┴ 78┴9328501┴200┬─00─09─0038┬─00─19─0039├┴─0╞1┴9378501┴01╞┴942187─, 3441
  608. 101 ─┴╘┴ 75├19─00├╞9920├╞┴94038╞─75├19─40├╞9960├╞┼88810┼4┴27╞┬─00├╞4┴1869, 4302
  609. 102 ─┴╘┴ 209─80├╞├┴10╞3┴2278┴0┴0┴0┴0┴9─00├┼8┴4┴4┴4┴4┴18693├9─30├┼┴9009─90, 3231
  610. 103 ─┴╘┴ 03├┴10┼58─3┼03┴2078┼3─039─0038├┴10╞┴┴93885╞┼┴99┬8─1403┴9├08─1503, 3338
  611. 104 ─┴╘┴ ┴97╞8─0──├┴9818─1┴─0┴9┴88─12─0┴91┬8─11─0┴91┼8─18─05860┼┼3├03┴026, 3864
  612. 105 ─┴╘┴ ┴┼3├03┬─00├╞2907994003┬─00├╞4┴4┴4┴996803┼8┼88810┼┴┴900┴24╞9─003├, 3256
  613. 106 ─┴╘┴ 9─503├9─┴03├9─╞03├9─403─9─903─9─┼03─9─303┼├┴10┼5┴─3─038─16─0┴226, 3739
  614. 107 ─┴╘┴ 18┬├68038┴7995├185╞┬┴90479┴┴├185╞├┴920┴00091╞┬┴07891╞┬8┴0┴0980┴0, 4224
  615. 108 ─┴╘┴ 2891╞┬6901┴05091╞┬┬─900385╞─┬─00├┼7─400385╞┬┬─30├┼85╞├┴006┬1╞─91, 4440
  616. 109 ─┴╘┴ ╞┬88┬1╞─91╞┬88┬1╞─91╞┬88┬1╞─91╞┬88┬1╞─91╞┬88┬1╞─91╞┬88┬1╞─91╞┬├┴, 6225
  617. 110 ─┴╘┴ 109╞┼┼19─0├┼3─031028┬99103999003├8├026─0╞5┴─3┼03293╞┴┴┬─┬╞├10┴0┴, 3593
  618. 111 ─┴╘┴ 0┴8─┬603├┼3├03├┼3├03┼┼3┼03┴9078─3─034├7┼┼┴000306090├0╞1215181┬1┼, 2159
  619. 112 ─┴╘┴ 202326282┴2─2╞3133353638393┬3├3─3┼3┼3╞3╞3╞00285078┴0├8╞018406890, 2268
  620. 113 ─┴╘┴ ┬8┼008305880┴8─0╞82000000000000000010101010101020202020202020314, 1379
  621. 114 ─┴╘┴ 08091300091300010┼000518010─100├05001303120╞0├0├00060╞1200030╞0─, 304
  622. 115 ─┴╘┴ 0─0╞040╞1205000─0107011┴090┼050002190010011309000╞0┴010├01000000, 257
  623. 200 ─┴╘┴ ┼╬─,0
  624.  
  625. --------------------------------------------------------------------------
  626. ╒UENCODED ├64 EXECUTABLE OF THE BASIC LOADER (╨┴╠)
  627.  
  628. BEGIN 644 DYCP.64
  629. ═└0@-"└$└4[(╘.3$╒,@└╞"└(└┼╩5(*$,╔╠─.╦-#┬╩-┌╨╚0[$╓-"─└4@@#└$-(@
  630. ═╠├└┌┴╘$─+$$┌╞4$─.╚═!)+(┬14┘$(╩>9(@63(├╩>-#─╤-3(┌@└")"└0└@4:╥┼
  631. ═,*0╙,3╔1╠╩5(*,8╚╥┬┴!)"╤&╦#*╩,2─╔*:╨╤-╩╩┼2"├&*,╚╚020╠1╩╨╥╩├(╔┴
  632. ═*2─└╩@@%└$-(╠─-(╩┼$┌┼╒,╠43╔3╠┼.╩,3╩".╚═#2+)!╔╙,└╨@@&└)─┬0╘┴%.
  633. ═0╘═354╘@15)23╒(┬.╚└└#╨┼─└(,@-╙┴!.3,╥.#4╨,4$╥,#!"1#└╨1#└┘1#└╨.
  634. ═,╙┴"1#└╨1#$┘1#└╨,╙┼#040╨1├%!.3,╫.#4╨,4$╨,49!.30╥,3@╫1"╨@,╙0╘#
  635. ═,0!<"64└@╥└╫-4,╤.40╨,$-&.3─╥,$-&03─╘,#,╪1─0╫-4,╤.40╘,$-&.3─╓&
  636. ═,$-&13@╪.#$╨131!,├=&0─0╨,$-&-$$╤.#8┘+"└╘,╙└╥└*─)9@"#(#(╨.40╪3
  637. ═,$-&0╘$╤,$8╙03(╥-╙┴!,$$╨03!!,$$┘1#└╨0╘4╪031!-$$╘031!,3@╓.3-#╨
  638. ═.40╙,$-%03─╨,#┼$.3└╠(#,╥,╙$└]@┼╟└(,@,#-#03$╨134╪1#-%,#-!,├└╫┘
  639. ═.$4╙1#└╙.40╨,#,╪0╘$╤,$9!03─╙.#@╒1─5!.3┼".$0╤-#└╙03┼#,#┴$,34╨@
  640. ═,╥╨@,╙,╙.└!#"╞@└@╥!!.3=&.$0╨1$1#03─╪,3┴$,4%$,$$┘03@╪1#$╥1#!!┬
  641. ═.3%".$0╤,40╨03─╤13┴$,3┴$,#4╪-├!%13-#,#-!,#(╓+"└╙.#8╘└)└*:0"#]
  642. ═($%%,╘,╨,╘)$,#!#1├(┘,#<┘.30╨,#-"1#└╨0╘8╘031!-$$┘.38╪,#-%.$4╪$
  643. ═.#@╤,$5!03─╨,$$╥-$8┘1#└╨,╘,╠(#,╥-38└╫0╔╩└(,@.40╒,#-#.41!,#-#]
  644. ═.41&,#-#.40╘,#-$.40┘,#-$.41%,#-$.40╙,#-%0╘$╤,$4╒040╙1#└╙.$0╤*
  645. ═-─0╨03(╥-┬╨@,╙<╙.0└╩"╓╠└@╥└╤.$)#-├@╨,╙┴!-╙─┘-4,╤.#5&0─$┘,#0╫^
  646. ═.4%!0╙$╪-49#03─╥,$$╨,#└┘,49"03└╫.#─╤1─(╪03!!,#─╪,$$╨+"└╘,├(╘:
  647. ═└'<+;└"#(#(╪.3%&0├8┘,#%!,#4╨.3%&0─)$.3└╨,╙@╒1─1"1#└╨0╘4╫1#0╨;
  648. ═,#,╪-49"0─0╙,$-%.#5&0╘$╨,#9",49$.3$╠(#0╘-#└└╤└══└(,@1─(╪.$(╤?
  649. ═1─0┘,49".#┴",49$.3%&0├@╪0├%&1#─╤1─(╪.$(╤1─0┘,49".#┴",49$.3%&╓
  650. ═0├@╪0├%&1#─╤1─)#02╨@-├(╥-0└1#&╪└@╥└╤,#┼&144╤.40╨0╘4╙1#└╙,3└╥╦
  651. ═.$(┘.3$╨,╙─┘.3└╨,╘,╪0╙└╥-─0╨1├5!1#-%,#,╥.3-&04%"1$)&0╙$╨03!!═
  652. ═+"└╙-3─╙└%╪,;╨"#(#!!.$1"-├└╙0╘4╙0╙└╙0╘4╙0╙└╙144╙13└╙03─╨-╙┴$╚
  653. ═,╘0╨,╙1#-╘5%03└╨,#,╨-├└┘,$,╨1├$╥,34╤.#%",44╠(#(╤-3─└╩╨╤╨└(,@0
  654. ═,├└╥,╙(╓,├@╥03)$,─8╙,3,╙,╙4╙-├,╪,╙─╙0├-#,╘0╙13-%,╘8╙1├-&,#└╥[
  655. ═.#4╨-╙┴!,$,╪1├└╤.#0╨-├@┘,"╨@,├(╓.└#╪#'$└@╥!".$4╨,#@╙,#4╪.#!!8
  656. ═.$0╨1├@╥,#└╨,#└╨,#└╨,#└╨,#└╨,#$╨,3└╤,#$╨,3└╤,#(╨,├└╥,#(╨,├└╥^
  657. ═,#(╨,╙$╘+"└╤,╙<┘└$0-<@"#(#└╪,#─╤,╙└╨,#─╤,╙└╨,#$╨13└╨,#4╤.#└╤7
  658. ═,$0╤,#!#,#4╨,#$╙,#,╤,├!&,$,╨0╙└╨,#8╨1├$╥,#└╨,╙!&,$0╠(#,╨-└"02
  659. ═#7,└@╥└╨1#!&,#0╨1├$╥,#4╨,#!$,#$╨-╙└╤,4$╨.3!%,#4╨,#└╥,3─╨,#$╨.
  660. ╠,#$╤,╙└┘,#└╨1├!!,#$╨0╙└╤,#└╨,#└╨+"└╥-3<└╟└╫(└(,@14┘$+#└└└└└╨╦
  661. └└
  662. END
  663. SIZE 1439
  664. --------------------------------------------------------------------------
  665. ╒UENCODED ├64 EXECUTABLE OF THE BASIC LOADER (╬╘╙├)
  666.  
  667. BEGIN 644 DYCP-NTSC.BAS
  668. ═└0@-"└$└4[(╘.3$╒,@└╞"└(└┼╩5(*$,╔╠─.╦-#┬╩-┌╨╚0[$╓-"─└40@#└$-(?
  669. ═╠├└┌┴╘$─+$$┌╞4$─.╚═!)+(┬14┘$(╩>9(╔,┬.╔╪╘.3$╒,├╩└└(@(!└"!1╦(╨/
  670. ═╔#,╤.┼&╥╔4@╚╤┬├**$$─+$:╠,╩╚╤*2─╔╦#$╓╩╩5(*,8╚╥┬┴!)"╤&╦#*╩,┬─╔:
  671. ═*0"╔"└4└0╘┬╥0╘┬╩43╩74╥╤1.┼.╥4┌╚╤.╚(┌┬╘-(╠─&╟,╨#!"└8└╞2)#2$5#╞
  672. ═2╒-532!%4┼)/4┬(┌@└#'"%╚└@└└4"60└@╥└╫.$$┘,╙(╪-3└╤03(╨,$)$,#!$╠
  673. ═,#┼$,#└╙.$)$,#!$,3┼$,#└╙.4-!1#!&,4$┘,╙<╪-3└╤03└╤1─$┘-#(╤.#=$╔
  674. ═+"└╙-#0╤└&$)90"#(#<╒0╙$┘1#└╨0╘8┘.3(╨0╘9!.30╨,╙┴&1#<╒0╙$┘1#0╨!
  675. ═0╘8┘.38╨0╘9%.#@╪,3!%-$$╥-╘9"1#└╨0╘8╘03$╪-├─╠(#0╙,#(└╦@┼╞└(,@╥
  676. ═,├└┘1#@╨0╘9#03$╨1├-!,├(╫.$$╨03!!,$$╨03┼$,#!#13┴!-$$╘031!-$$╤╩
  677. ═.#8┘,╘,┘1#,╨0╘5!.3└╨.40┘,"╨@,╙(╙,0#["6<└@╥└╨,╘-!,3!%-3┴$,╘4╨.
  678. ═,╘$╥,#<╪13-$,#,┘1#└╨,╙┴#03$╨1─%!.3,╪.#5&14$┘.4(╪1#$╘,#-!.4,╨;
  679. ═.$0╤-3└╙+"└╙,╙,╪└$@*:└"#($$┘-╘8╪1#!$1$-!.3@╤.$0╤040╨03┼",#┴$:
  680. ═,3)$,$$┘,4(╪1#$╤1#!!.3%%.$0╤.$0╨-3@╓,$5%,╘,╨,╘$╨,4,╠(#,╪-├(└9
  681. ═┼0╔╔└(,@044╙0╙└╙0─0╨,$-&,├─╨-╙─┘-#└╨,╘)$,#!#1├1!-$$╘03─┘-├@╨┬
  682. ═,╘4╪13@╪.#$╨14%!.3└╨03(╘1├┼$,#└╙0╥╨@,╙(╒-@#┬"╞╚└@╥└┘1#4╨,╘,┘$
  683. ═1$$╨,╘,┘1$8╨,╘,┘1#0╨,╘0┘1#─╨,╘0┘1$4╨,╘0┘1#,╨,╘5#03$╨135!1#-$┼
  684. ═,#,╪1#$╓1#!!,├%#+"└╙-╙(┘└"\+:╨"#(#$╪0─,╓.#└╙.$$╫.3─╒0╙$╪-49")
  685. ═03─╨-#<┘04%#,3@╒1─-!.3(╨03└╨,#─╤1─)!,#<╪.3%&0├┴!,$$╨.3@╨03└╠#
  686. ═(#0╥,├0└?└═╠└(,@,├@┘,49"-├─╨,4$╨-3└┘,49"0─0┘,#└╙.#5&1$)$,#!#╚
  687. ═13=$-#└╨,╙@╒1─)"1#,╨0╘4╪-49#03└╨-─(╤1─0┘,2╨@-#0╘,└#)"╓╘└@╥!&├
  688. ═0├@╪0├%&1#─╤1─(╪.$(╤1─0┘,49".#┴",49$.3%&0├@╪0├%&1#─╤1─(╪.$(╤┴
  689. ═1─0┘,49".#┴",49$.3%&0─-!+"└╓,├(╒└!8,;@"#(#$╨.49%13$┘1#!#13-$╘
  690. ═,#,╤,#(╪0├─┘,3└╙.3─┘,#└╙0╙┴#,#(╓1#!&-4%$,╘4╨,╙(┘,╘9!04)$0─9#0
  691. ═,3!!,$$╠(#,╒.3,└8╨╤╧└(,@,$$╪1$(╓,#-#13-#,#-#13-#,#-%13-%,#-!─
  692. ═.3└╫.$0╙1#└╙-$,╫145!,#└╨,╙└╓,#─╨0╙!&,3(╤-3$╪,4(╤12╨@,├$╒.0"╨2
  693. ═#'└└@╥└╥,#(╙,├8╥.#)!,─0╥1├,╤,╙,╙-3,╓,╙@╙.3-",╘,╙1#-%,╘4╙1├-&/
  694. ═,╘8╨,#(╪-3└╫.$$╨0╙┴&,#$╪-#└╓.#─╨+"└╥,├8╪└/╘,<0"#($(╪13└╨.#,╨2
  695. ═-3@╪,$$╪1#!&.#(╨,#└╨,#└╨,#└╨,#└╨,#└╨,3└╤,#$╨,3└╤,#$╨,├└╥,#(╨>
  696. ═,├└╥,#(╨,├└╙,30╠(#$╙-╙─└20╒╥└(,@,#@╨.3$╙,#└╨.3$╙,#└╨,3!%,#└╨3
  697. ═-3$╪,#$╨1#$╨,$,╨-3└╨,3,╨,╙$╥,$8╨0╙!#,#└╨-├!&,3(╨,#└╙,$8╨1"╨@╩
  698. ═,╙└╘└)4-<╨"#(#!$,$8╨-#!&,3(╨-3└╨,$0╨,3└╫,#$╤03└┘,$4╨-3└╨,#(╤└
  699. ═.3└╨,3└╨,3$╙,#─╨,#!&,$$╨,3!#,#$╨,#└╨,#└╠(#(╒-╨"┴#7@└@╥!%3─0╠┌
  700. $,└└└└#└╨0
  701. └└
  702. END
  703. SIZE 1444
  704.  
  705. ================================================================================
  706. ╧PENING THE BORDERS
  707. BY ╨ASI '┴LBERT' ╧JALA (PO87553@CS.TUT.FI OR ALBERT@CC.TUT.FI)
  708.         ╫RITTEN: 20-╩UL-92
  709.  
  710.        ┴LL TIMINGS ARE IN ╨┴╠, PRINCIPLES WILL APPLY TO ╬╘╙├ TOO.
  711.               ╥EFER TO ╓╔├ MEMORY MAP IN ╚ACKING ╔SSUE 4.
  712.  
  713. ╓╔├ HAS MANY FEATURES AND TRANSPARENT BORDERS ARE ONE OF THEM. ┘OU CAN NOT
  714. MAKE CHARACTERS APPEAR IN THE BORDER, BUT SPRITES ARE DISPLAYED IN THE
  715. BORDER TOO. "╚OW TO DO THIS THEN?" IS THE BIG QUESTION.
  716.  
  717. ╘HE SCREEN RESOLUTION IN ├64 HAS BEEN AND WILL BE 320 X 200 PIXELS. ═OST
  718. GAMES NEED TO USE THE WHOLE SCREEN TO BE EFFICIENT OR JUST PLAIN PLAYABLE.
  719. ┬UT THERE STILL IS THAT USELESS BORDER AREA, AND YOU CAN PUT SCORE AND
  720. OTHER STATUS INFORMATION THERE INSTEAD OF HAVING THEM INTERFERE WITH THE
  721. FULL-SCREEN SMOOTH-SCROLLING PLAYING AREA.
  722.  
  723.  
  724. _╚OW TO DISABLE THE VERTICAL BORDERS_
  725.  
  726. ╫HEN ╓╔├ (╓IDEO ╔NTERFACE ├ONTROLLER) HAS DISPLAYED ALL CHARACTER ROWS,
  727. IT WILL START DISPLAYING THE VERTICAL BORDER AREA. ╔T WILL START DISPLAYING
  728. THE CHARACTERS AGAIN IN TOP OF THE SCREEN. ╘HE ROW SELECT REGISTER SETS THE
  729. NUMBER OF CHARACTER LINES ON THE SCREEN. ╔F WE SELECT THE 24-ROW DISPLAY
  730. WHEN ╓╔├ IS DRAWING THE LAST (25TH) ROW, IT DOES NOT START TO DRAW THE
  731. BORDER AT ALL !  ╓╔├ WILL THINK THAT IT ALREADY STARTED TO DRAW THE BORDER.
  732.  
  733. ╘HE 25-ROW DISPLAY MUST BE SELECTED AGAIN IN THE TOP OF THE SCREEN, SO THAT
  734. THE BORDER MAY BE OPENED IN THE NEXT FRAME TOO. ╘HE NUMBER OF DISPLAYED ROWS
  735. CAN BE SELECTED WITH THE BIT 3 IN $D011. ╔F THE BIT IS SET, ╓╔├ WILL DISPLAY
  736. 25 ROWS AND 24 ROWS OTHERWISE. ╫E HAVE TO CLEAR THE BIT SOMEWHERE DURING THE
  737. LAST ROW (RASTER LINES $F2-$FA) AND SET IT AGAIN IN TOP OF THE SCREEN OR AT
  738. LEAST SOMEWHERE BEFORE THE LAST ROW (LINE $F2). ╘HIS HAS TO BE DONE IN EVERY
  739. FRAME (50 TIMES PER SECOND IN ╨┴╠).
  740.  
  741.  
  742. _╚OW TO OPEN THE SIDEBORDERS_
  743.  
  744. ╘HE SAME TRICK CAN BE APPLIED TO SIDEBORDERS. ╫HEN ╓╔├ IS ABOUT TO START
  745. DISPLAYING THE SIDEBORDER, JUST SELECT 38-COLUMN MODE AND RESTORE 40-COLUMN
  746. MODE SO THAT YOU CAN DO THE TRICK AGAIN IN THE NEXT SCAN LINE. ╔F YOU NEED TO
  747. OPEN THE SIDEBORDERS IN THE BOTTOM OR TOP BORDER AREA, YOU HAVE TO OPEN THE
  748. VERTICAL BORDERS ALSO, BUT THERE SHOULDN'T BE ANY DIFFICULTY IN DOING THAT.
  749.  
  750. ╘HERE IS TWO DRAWBACKS IN THIS. ╘HE TIMING MUST BE PRECISE, ONE CLOCK CYCLE
  751. OFF AND THE SIDEBORDER WILL NOT OPEN (THE SPRITES WILL GENERALLY TAKE CARE OF
  752. THE TIMING) AND YOU HAVE TO DO THE OPENING ON EACH AND EVERY LINE. ╫ITH
  753. TOP/BOTTOM BORDERS ONCE IN A FRAME WAS ENOUGH.
  754.  
  755. ┴NOTHER PROBLEM IS BAD-LINES. ╘HERE IS NOT ENOUGH TIME TO OPEN THE BORDERS
  756. DURING A BAD LINE AND STILL HAVE ALL OF THE SPRITES ENABLED. ╧NE SOLUTION
  757. IS TO OPEN THE BORDERS ONLY ON SEVEN LINES AND LEAVE THE BAD LINES UNOPENED.
  758. ┴NOTHER WAY IS TO USE LESS THAN EIGHT SPRITES. ┘OU CAN HAVE SIX OF THEM
  759. ON A BAD LINE AND STILL BE ABLE TO OPEN THE SIDEBORDERS (╨┴╠). ╘HE OLD AND
  760. STILL GOOD SOLUTION IS TO SCROLL THE BAD LINES, SO THAT ╓╔├ WILL NOT START
  761. TO DRAW THE SCREEN AT ALL UNTIL IT IS ALLOWED TO DO SO.
  762. [╥EAD MORE ABOUT BAD LINES FROM PREVIOUS ├=╚ACKING ╔SSUES]
  763.  
  764.  
  765. _╙CROLLING THE SCREEN_
  766.  
  767. ╓╔├ BEGINS TO DRAW THE SCREEN FROM THE FIRST BAD LINE. ╓╔├ WILL KNOW WHAT
  768. LINE IS A BAD LINE BY COMPARING ITS SCAN LINE COUNTER TO THE VERTICAL
  769. SCROLL REGISTER : WHEN THEY MATCH, THE NEXT LINE IS A BAD LINE. ╔F WE CHANGE
  770. THE VERTICAL SCROLL REGISTER ($D011), THE FIRST BAD LINE WILL MOVE ALSO.
  771. ╔F WE DO THIS ON EVERY LINE, THE LINE COUNTER IN ╓╔├ WILL NEVER MATCH WITH
  772. IT AND THE DRAWING NEVER STARTS (UNTIL IT IS ALLOWED TO DO SO).
  773.  
  774. ╫HEN WE DON'T HAVE TO WORRY ABOUT BAD LINES, WE HAVE ENOUGH TIME TO OPEN THE
  775. BORDERS AND DO SOME OTHER EFFECTS TOO. ╔T IS NOT NECASSARY TO CHANGE THE
  776. VERTICAL SCROLL ON EVERY LINE TO GET RID OF THE BAD LINES, JUST MAKE SURE
  777. THAT IT NEVER MATCHES THE LINE COUNTER (OR ACTUALLY THE LEAST SIGNIFICANT
  778. 8 BITS).
  779.  
  780. ┘OU CAN EVEN SCROLL THE BAD LINES INDEPENDENTLY AND YOU HAVE ╞╠─ - ╞LEXIBLE
  781. ╠INE ─ISTANCE. ┘OU JUST ALLOW A BAD LINE WHEN IT IS TIME TO DISPLAY THE NEXT
  782. CHARACTER ROW. ╫ITH THIS YOU CAN BOUNCE THE LINES OR SCROLL A HIRES PICTURE
  783. VERY FAST DOWN THE SCREEN. ┬UT THIS HAS NOT SO MUCH TO DO WITH BORDERS, SO
  784. ╔ WILL LEAVE IT TO ANOTHER ARTICLE. (╩UST SEND REQUESTS AND ╔ MIGHT START
  785. WRITING ABOUT ╞╠─ ..)
  786.  
  787.  
  788. _╟ARBAGE APPEARING_
  789.  
  790. ╫HEN WE OPEN THE TOP AND BOTTOM BORDERS, SOME GRAPHICS MAY APPEAR. ┼VEN
  791. THOUGH ╓╔├ HAS ALREADY COMPLETED THE GRAPHICS DATA FETCHES FOR THE SCREEN
  792. AREA, IT WILL STILL FETCH DATA FOR EVERY CHARACTER POSITION IN TOP AND BOTTOM
  793. BORDERS. ╘HIS WILL NOT DO ANY HARM THOUGH, BECAUSE IT DOES NOT GENERATE ANY
  794. BAD LINES AND HAPPENS DURING VIDEO FETCH CYCLES [SEE ═ISSING ├YCLES ARTICLE].
  795. ╓╔├ READS THE DATA FROM THE LAST ADDRESS IN THE CURRENT VIDEO BANK, WHICH IS
  796. NORMALLY $3FFF AND DISPLAYS THIS OVER AND OVER AGAIN.
  797.  
  798. ╔F WE CHANGE THE DATA IN THIS ADDRESS IN THE BORDER AREA, THE CHANGE WILL BE
  799. VISIBLE RIGHT AWAY. ┴ND IF YOU SYNCHRONIZE THE ROUTINE TO THE BEAM POSITION,
  800. YOU CAN HAVE A DIFFERENT VALUE ON EACH LINE. ╔F THERE IS NOTHING ELSE TO DO
  801. IN THE BORDER, YOU CAN GET SEVEN DIFFERENT VALUES ON EACH SCAN LINE.
  802.  
  803. ╘HE BAD THING ABOUT THIS GRAPHICS IS THAT IT IS IMPOSSIBLE TO CHANGE ITS
  804. COLOR - IT IS ALWAYS BLACK. ╔T IS OF COURSE POSSIBLE TO USE INVERTED GRAPHICS
  805. AND CHANGE THE BACKGROUND COLOR. ┴ND IF YOU HAVE DIFFERENT DATA ON EACH LINE,
  806. YOU CAN AS EASILY HAVE DIFFERENT COLOR(S) ON EACH LINE TOO.
  807.  
  808. ╔F YOU DON'T USE $3FFF FOR ANY EFFECTS, IT IS A GOOD IDEA TO SET IT TO ZERO,
  809. BUT REMEMBER TO CHECK THAT YOU DO NOT STORE ANYTHING IMPORTANT IN THAT
  810. ADDRESS. ╔N ONE DEMO ╔ JUST CLEARED $3FFF AND IT WAS RIGHT IN THE MIDDLE OF
  811. ANOTHER PACKED DEMOPART. ╔T TOOK SOME TIME TO FIND OUT WHAT WAS WRONG WITH
  812. THE OTHER PART.
  813.  
  814.  
  815. _╚ORIZONTAL SCROLLING_
  816.  
  817. ╘HIS NEW GRAPHICS DATA ALSO OBEYS THE HORIZONTAL SCROLL REGISTER ($─016), SO
  818. YOU CAN DO LIMITED TECH-TECH EFFECTS IN THE BORDER TOO. ┘OU CAN ALSO USE
  819. SPRITES AND OPEN THE SIDEBORDERS. ┘OU CAN SEE AN EXAMPLE OF THE TECH-TECH
  820. EFFECT IN THE FIRST EXAMPLE PROGRAM. ═ULTICOLOR MODE SELECT HAS NO EFFECT
  821. ON THIS DATA. ┘OU CAN READ MORE ABOUT TECH-TECH EFFECTS IN A FUTURE ARTICLE.
  822.  
  823.  
  824. _┼XAMPLE ROUTINE_
  825.  
  826. ╘HE EXAMPLE PROGRAM WILL SHOW HOW TO OPEN THE TOP AND BOTTOM BORDERS AND HOW
  827. TO USE THE $3FFF-GRAPHICS. ╔T IS FAIRLY WELL COMMENTED, SO JUST CHECK IT FOR
  828. DETAILS. ╘HE PROGRAM USES A SPRITE TO DO THE SYNCHRONIZATION [SEE ═ISSING
  829. ├YCLES ARTICLE] AND READS A PART OF THE CHARACTER ╥╧═ TO THE DISPLAY DATA
  830. BUFFER. ╘O BE HONEST, ╔ MIGHT ADD THAT THIS IS ALMOST THE SAME ROUTINE THAN
  831. THE ONE IN THE ═ISSING ├YCLES ARTICLE. ╔ HAVE INCLUDED BOTH ╨┴╠ AND ╬╘╙├
  832. VERSIONS OF THE EXECUTABLES.
  833.  
  834. --------------------------------------------------------------------------
  835. ╘HE EXAMPLE PROGRAM - $3FFF-GRAPHICS
  836.  
  837. ╔═┴╟┼0= $├┼00   ; ╞IRST GRAPHICS PIECE TO SHOW
  838. ╔═┴╟┼1= $├╞00   ; ╙ECOND PIECE
  839. ╘┼├╚=   $├─00   ; X-SHIFT
  840. ╥┴╙╘┼╥= $╞┴     ; ╥ASTERLINE FOR THE INTERRUPT
  841. ─╒══┘=  $├╞╞╞   ; ─UMMY-ADDRESS FOR TIMING (REFER TO MISSING_CYCLES-ARTICLE)
  842.  
  843. *= $├000
  844.         ╙┼╔             ; ─ISABLE INTERRUPTS
  845.         ╠─┴ #$7╞        ; ─ISABLE TIMER INTERRUPTS (├╔┴)
  846.         ╙╘┴ $─├0─
  847.         ╠─┴ #$01        ; ┼NABLE RASTER INTERRUPTS (╓╔├)
  848.         ╙╘┴ $─01┴
  849.         ╙╘┴ $─015       ; ┼NABLE THE TIMING SPRITE
  850.         ╠─┴ #<╔╥╤
  851.         ╙╘┴ $0314       ; ╔NTERRUPT VECTOR TO OUR ROUTINE
  852.         ╠─┴ #>╔╥╤
  853.         ╙╘┴ $0315
  854.         ╠─┴ #╥┴╙╘┼╥     ; ╙ET THE RASTER COMPARE (9TH BIT WILL BE SET
  855.         ╙╘┴ $─012       ;  INSIDE THE RASTER ROUTINE)
  856.         ╠─┴ #╥┴╙╘┼╥-20  ; ╙PRITE IS SITUATED 20 LINES BEFORE THE INTERRUPT
  857.         ╙╘┴ $─001
  858.  
  859.         ╠─╪ #111
  860.         ╠─┘ #0
  861.         ╙╘┘ $─017       ; ─ISABLE Y-EXPAND
  862.         ╠─┴ #$32
  863.         ╙╘┴ $01         ; ╙ELECT ├HARACTER ╥╧═
  864. ╠╧╧╨0   ╠─┴ $─000,╪
  865.         ╙╘┴ ╔═┴╟┼0,┘    ; ├OPY A PART OF THE CHARSET TO BE THE GRAPHICS
  866.         ╙╘┴ ╔═┴╟┼0+112,┘
  867.         ╠─┴ $─800,╪
  868.         ╙╘┴ ╔═┴╟┼1,┘
  869.         ╙╘┴ ╔═┴╟┼1+112,┘
  870.         ╔╬┘             ; ╒NTIL WE COPIED ENOUGH
  871.         ─┼╪
  872.         ┬╨╠ ╠╧╧╨0
  873.         ╠─┴ #$37        ; ├HAR ╥╧═ OUT OF THE ADDRESS SPACE
  874.         ╙╘┴ $01
  875.  
  876.         ╠─┘ #15
  877. ╠╧╧╨1   ╠─┴ ╪╨╧╙,┘      ; ╘AKE A HALF OF A SINUS AND MIRROR IT TO MAKE
  878.         ╙╘┴ ╘┼├╚,┘      ;  A WHOLE CYCLE AND THEN COPY IT AS MANY TIMES
  879.         ╙╘┴ ╘┼├╚+32,┘   ;   AS NECASSARY
  880.         ╠─┴ #24
  881.         ╙┼├
  882.         ╙┬├ ╪╨╧╙,┘
  883.         ╙╘┴ ╘┼├╚+16,┘
  884.         ╙╘┴ ╘┼├╚+48,┘
  885.         ─┼┘
  886.         ┬╨╠ ╠╧╧╨1
  887.         ╠─┘ #64
  888. ╠╧╧╨2   ╠─┴ ╘┼├╚,┘
  889.         ╙╘┴ ╘┼├╚+64,┘
  890.         ╙╘┴ ╘┼├╚+128,┘
  891.         ─┼┘
  892.         ┬╨╠ ╠╧╧╨2
  893.         ├╠╔             ; ┼NABLE INTERRUPTS
  894.         ╥╘╙             ; ╥ETURN TO BASIC (?)
  895.  
  896.  
  897. ╔╥╤     ╠─┴ #$13        ; ╧PEN THE BOTTOM BORDER (TOP BORDER WILL OPEN TOO)
  898.         ╙╘┴ $─011
  899.         ╬╧╨
  900.         ╠─┘ #111        ; ╥EDUCE FOR ╬╘╙├ ?
  901.         ╔╬├ ─╒══┘       ; ─O THE TIMING WITH A SPRITE
  902.         ┬╔╘ $┼┴         ; ╫AIT A BIT (ADD A ╬╧╨ FOR ╬╘╙├)
  903.  
  904. ╠╧╧╨3   ╠─┴ ╘┼├╚,┘      ; ─O THE X-SHIFT
  905.         ╙╘┴ $─016
  906. ╞╔╥╙╘   ╠─╪ ╔═┴╟┼0,┘    ; ╠OAD THE GRAPHICS TO REGISTERS
  907. ╙┼├╧╬─  ╠─┴ ╔═┴╟┼1,┘
  908.         ╙╘┴ $3╞╞╞       ; ┴LTERNATE THE GRAPHICS
  909.         ╙╘╪ $3╞╞╞
  910.         ╙╘┴ $3╞╞╞
  911.         ╙╘╪ $3╞╞╞
  912.         ╙╘┴ $3╞╞╞
  913.         ╙╘╪ $3╞╞╞
  914.         ╙╘┴ $3╞╞╞
  915.         ╙╘╪ $3╞╞╞
  916.         ╙╘┴ $3╞╞╞
  917.         ╙╘╪ $3╞╞╞
  918.         ╠─┴ #0          ; ╘HROW AWAY 2 CYCLES (ADD A ╬╧╨ FOR ╬╘╙├)
  919.         ─┼┘
  920.         ┬╨╠ ╠╧╧╨3
  921.  
  922.         ╙╘┴ $3╞╞╞       ; ├LEAR THE GRAPHICS
  923.         ╠─┴ #8
  924.         ╙╘┴ $─016       ; X-SCROLL TO NORMAL
  925.         ╠─┴ #$1┬
  926.         ╙╘┴ $─011       ; ╬ORMAL SCREEN (BE READY TO OPEN THE BORDER AGAIN)
  927.         ╠─┴ #111
  928.         ─┼├ ╞╔╥╙╘+1     ; ═OVE THE GRAPHICS BY CHANGING THE LOW BYTE OF THE
  929.         ┬╨╠ ╧╓┼╥        ;  LOAD INSTRUCTION
  930.         ╙╘┴ ╞╔╥╙╘+1
  931. ╧╓┼╥    ╙┼├
  932.         ╙┬├ ╞╔╥╙╘+1
  933.         ╙╘┴ ╙┼├╧╬─+1    ; ┴NOTHER GRAPHICS GOES TO OPPOSITE DIRECTION
  934.         ╠─┴ ╠╧╧╨3+1     ; ═OVE THE X-SHIFT ALSO
  935.         ╙┼├
  936.         ╙┬├ #2
  937.         ┴╬─ #31         ; ╙INUS CYCLE IS 32 BYTES
  938.         ╙╘┴ ╠╧╧╨3+1
  939.  
  940.         ╠─┴ #1
  941.         ╙╘┴ $─019       ; ┴CKNOWLEDGE THE RASTER INTERRUPT
  942.         ╩═╨ $┼┴31       ; JUMP TO THE NORMAL IRQ-HANDLER
  943.  
  944. ╪╨╧╙    ┬┘╘ $├,$├,$─,$┼,$┼,$╞,$╞,$╞,$╞,$╞,$╞,$╞,$┼,$┼,$─,$├
  945.         ┬┘╘ $├,$┬,$┴,$9,$9,$8,$8,$8,$8,$8,$8,$8,$9,$9,$┴,$┬
  946.                         ; HALF OF THE SINUS
  947.  
  948. --------------------------------------------------------------------------
  949. ┬ASIC LOADER FOR THE $3FFF-PROGRAM (╨┴╠)
  950.  
  951. 1 ╙=49152
  952. 2 ─┼╞╞╬╚(├)=├-48+7*(├>64)
  953. 3 ├╚=0:╥┼┴─┴$,┴:╨╥╔╬╘┴$:╔╞┴$="┼╬─"╘╚┼╬╨╥╔╬╘"<CLEAR>":╙┘╙49152:┼╬─
  954. 4 ╞╧╥╞=0╘╧31:╤=╞╬╚(┴╙├(═╔─$(┴$,╞*2+1)))*16+╞╬╚(┴╙├(═╔─$(┴$,╞*2+2)))
  955. 5 ├╚=├╚+╤:╨╧╦┼╙,╤:╙=╙+1:╬┼╪╘:╔╞├╚=┴╘╚┼╬3
  956. 6 ╨╥╔╬╘"├╚┼├╦╙╒═ ┼╥╥╧╥":┼╬─
  957. 100 ─┴╘┴ 78┴97╞8─0──├┴9018─1┴─08─15─0┴9718─1403┴9├08─1503┴9╞┴8─12─0┴9┼68─,4003
  958. 101 ─┴╘┴ 01─0┴26╞┴0008├17─0┴9328501┬─00─09900├┼9970├┼┬─00─89900├╞9970├╞├8,4030
  959. 102 ─┴╘┴ ├┴10┼┴┴9378501┴00╞┬9─├├09900├─9920├─┴91838╞9─├├09910├─9930├─8810,4172
  960. 103 ─┴╘┴ ┼8┴040┬900├─9940├─9980├─8810╞45860┴9138─11─0┼┴┴06╞┼┼╞╞├╞24┼┴┬906,4554
  961. 104 ─┴╘┴ ├─8─16─0┬┼53├┼┬91├├╞8─╞╞3╞8┼╞╞3╞8─╞╞3╞8┼╞╞3╞8─╞╞3╞8┼╞╞3╞8─╞╞3╞8┼,4833
  962. 105 ─┴╘┴ ╞╞3╞8─╞╞3╞8┼╞╞3╞┴9008810─18─╞╞3╞┴9088─16─0┴91┬8─11─0┴96╞├┼85├010,4163
  963. 106 ─┴╘┴ 038─85├038┼─85├08─88├0┴─7╞├018┼901291╞8─7╞├0┼┼19─04├31┼┴0├0├0─0┼,3719
  964. 107 ─┴╘┴ 0┼0╞0╞0╞0╞0╞0╞0╞0┼0┼0─0├0├0┬0┴09090808080808080809090┴0┬00000000,318
  965. 200 ─┴╘┴ ┼╬─,0
  966.  
  967. --------------------------------------------------------------------------
  968. ┴N UUENCODED ├64 EXECUTABLE $3FFF-PROGRAM (╨┴╠)
  969.  
  970. BEGIN 644 X╞╞╞.64
  971. ═└0@-"└$└4[(╘.3$╒,@└╞"└(└┼╩5(*$,╔╠─.╦-#┬╩-┌╨╚0[$╓-"─└40@#└$-(?
  972. ═╠├└┌┴╘$─+$$┌╞4$─.╚═!)+(┬14┘$(╩>9(╔,┬.╔╪╘.3$╒,├╩└└(@(!└"!1╦(╨/
  973. ═╔#,╤.┼&╥╔4@╚╤┬├**$$─+$:╠,╩╚╤*2─╔╦#$╓╩╩5(*,8╚╥┬┴!)"╤&╦#*╩,┬─╔:
  974. ═*0"╔"└4└0╘┬╥0╘┬╩43╩74╥╤1.┼.╥4┌╚╤.╚(┌┬╘-(╠─&╟,╨#!"└8└╞2)#2$5#╞
  975. ═2╒-532!%4┼)/4┬(┌@└└."60└@╥└╫.$$┘-╘8╪1#!$1$-!.3└╤.$0╤040╨.$0╤╦
  976. ═-40╨03─╫,3┴$,30╨,╘$┘0╙└╪1#$╒,#-!.49!.$0╤,─0╨03┼%-├┴$+"└╘,#└╙9
  977. ═└%╠)90"#(#└╤1#!!,├9&03└╨,#┴#,3=$,$$┘,╙(╪-3└╤0─0╨,$0╨.3─╨,$-%┘
  978. ═.3─╫,$-%0─0╨,$0╪.3─╨,$-&.3─╫,$-&0╙@╠(#0╨,╙└└╩└┼╞└(,@0╘$╤,$5!╙
  979. ═03─╙-╙@╒,#%!,#!&0├┼$0╘,╨.3─╨,$-$.3─╥,$-$03─╤.#,╪1├┼$0╘,╨.3─╤╠
  980. ═,$-$.3─╙,$-$.#@╤,"╨@-#$╫,@#╒"6<└@╥!%.$$╨-#!".3└╨0╘0┘.30╨0╘0┘0
  981. ═.3@╨0╘0╪.#$╨1├0╒.#8╨03─╤,╙┴$,3%$,$5!03└╓1─5%1─9#1├(╘14%".3└╓5
  982. ═+"└╘-34╘└$(*:└"#($-$.$0╤-─0╨0─4╒,╘-%0├─╤0╘-&.$1&1├-&.$5&1├-&%
  983. ═.$1&1├-&.$5&1├-&.$1&1├-&.$5&1├-&.$1&1├-&.$4╠(#0╪,╙,└├╨╔╔└(,@'
  984. ═1─8╙1├┴$1─8╙1├┴%1─8╙1─$┘,#└╪.#$╨1#$╪1$9&,╘9!.3└╪.$0╤-─0╨03─╤-
  985. ═0├┴$,3%$,$$┘-─9#13@╒0╙└╤,"╨@-#$╓,╨#<"╞╚└@╥└╨,╙┴$.#5#,#,╪140╪+
  986. ═-4,╨.$0╪.$,╨040╫1─,╨,3┴%.3└╤,├─╤1├┴$-╘9#,$5%,3┼$,#1#,╙%%03!#.
  987. ═,$,╨1#!%+"└╙-╙$┘└"@+:╨"#(#!%,$8╨1├!&,$8╨1├!&,$8╨13!%,$0╨0╙!#╨
  988. ═,$(╨03└┘,#─╨.#└╪,#@╨.#└╪,#@╨.#└┘,#─╨03!",#└╨,#└╨,#└╠(#,╤.└└╘>
  989. -"\@└@╥!%3─0╠,└└└└#@╨1
  990. └└
  991. END
  992. SIZE 823
  993. --------------------------------------------------------------------------
  994. ┴N UUENCODED ├64 EXECUTABLE $3FFF-PROGRAM (╬╘╙├)
  995.  
  996. BEGIN 644 XFFF-NTSC.64
  997. ═└0@-"└$└4[(╘.3$╒,@└╞"└(└┼╩5(*$,╔╠─.╦-#┬╩-┌╨╚0[$╓-"─└40@#└$-(?
  998. ═╠├└┌┴╘$─+$$┌╞4$─.╚═!)+(┬14┘$(╩>9(╔,┬.╔╪╘.3$╒,├╩└└(@(!└"!1╦(╨/
  999. ═╔#,╤.┼&╥╔4@╚╤┬├**$$─+$:╠,╩╚╤*2─╔╦#$╓╩╩5(*,8╚╥┬┴!)"╤&╦#*╩,┬─╔:
  1000. ═*0"╔"└4└0╘┬╥0╘┬╩43╩74╥╤1.┼.╥4┌╚╤.╚(┌┬╘-(╠─&╟,╨#!"└8└╞2)#2$5#╞
  1001. ═2╒-532!%4┼)/4┬(┌@└#'"%╚└@└└4"60└@╥└╫.$$┘-╘8╪1#!$1$-!.3└╤.$0╤╪
  1002. ═040╨.$0╤-40╨03─╫,3┴$,30╨,╘$┘0╙└╪1#$╒,#-!.49!.$0╤,─0╨03┼%-├┴$╚
  1003. ═+"└╘,#└╙└&$)90"#(#└╤1#!!,├9&03└╨,#┴#,3=$,$$┘,╙(╪-3└╤0─0╨,$0╨╪
  1004. ═.3─╨,$-%.3─╫,$-%0─0╨,$0╪.3─╨,$-&.3─╫,$-&0╙@╠(#0╨,╙└└╦@┼╞└(,@╚
  1005. ═0╘$╤,$5!03─╙-╙@╒,#%!,#!&0├┼$14,╨.3─╨,$-$.3─╥,$-$03─╤.#,╪1├┼$└
  1006. ═14,╨.3─╤,$-$.3─╙,$-$.#@╤,"╨@-#$╫-@#["6<└@╥!%.$$╨-#!".3└╨0╘0┘8
  1007. ═.30╨0╘0┘.3@╨0╘0╪.#$╨1├0╒.#8╨03─╤,╙┴$,3%$,$5!03└╓1─5%1─9#1├(╘+
  1008. ═14%%04(┘+"└╘-╙@╥└$@*:└"#(#└╨0╘0╪1#$╓1#!"13└╨0╘5".3└╨0╘8╪1$9&>
  1009. ═,╘8╪149&,╘8╪1$9&,╘8╪149&,╘8╪1$9&,╘8╪149&,╘8╪1$9&,╘8╠(#0╒.#└└?
  1010. ═┼0╔╔└(,@.$5&1├-&.$1&1├-&.$5&1├-&14%!.3└╨.#@╤,$0╨.$1&1├-&03─╨└
  1011. ═.#┴$,39$,$$┘,4(╪1#$╤1#!!.39&0╘4╪-┬╨@-#,╙,0#┬"╞╚└@╥!#,#$╨,#,╪┘
  1012. ═1#@╓0╙└╙.$5$.#9#,#┴$.#┼#,$%$.#!#,#$╪13─╨,3(┘,48╪1#@╨0╙!%13$┘╧
  1013. ═1#└╘0╙,╤14$╨0╙!#+"└╙.3└╒└"╪+:╨"#(#!$,$4╨13!&,$8╨1├!&,$8╨1├!&╫
  1014. ═,$4╨13!$,$,╨0╙!",$$╨.3└┘,#@╨.#└╪,#@╨.#└╪,#@╨.3└┘,$$╨0─$╥,#└╠%
  1015. 4(#4╨-╨└["╓╨└@╥!%3─0╠+3$└└└└╨┬
  1016. └└
  1017. END
  1018. SIZE 830
  1019.  
  1020. =============================================================================
  1021. ┴ ╚EAVY-─UTY ╨OWER ╙UPPLY FOR THE ├-64
  1022. BY ╩OHN ├. ┴NDREWS (NO EMAIL ADDRESS)
  1023.  
  1024.   ┴S A ├OMMODORE ╒SER FOR THE LAST 4 PLUS YEARS, ╔ AM AWARE OF THE MANY
  1025.   ARTICLES AND LETTERS IN THE PRESS THAT HAVE BEMOANED THE BURN-OUT
  1026.   PROBLEM OF THE ├-64 POWER SUPPLY. ╫HEN OUR ├LUB ┬┬╙ ADDED A ONE MEG
  1027.   DRIVE AND STAYED ON AROUND THE CLOCK, THE NEED FOR HEAVY-DUTY POWER
  1028.   SUPPLY BECAME VERY APPARENT.... ╘HREE POWER SUPPLIES WENT IN 3
  1029.   SUCCESSIVE DAYS!
  1030.  
  1031.   ╨ART OF THE PROBLEM WAS MY IGNORING THE SEASONS. ┘OU SEE DURING THE
  1032.   WINTER ╔ HAD SET THE POWER SUPPLY BETWEEN THE WINDOW AND THE SCREEN,
  1033.   ┘ES, OUTSIDE! ╫ITH THE ADVENT OF ╙PRING... WELL, YOU GET THE PICTURE.
  1034.  
  1035.   ╘HE TURN-AROUND TIME FORGETTING A NEW COMMERICAL SUPPLY WAS NOT IN THE
  1036.   BEST INTEREST OF THE ┬┬╙ AND ITS MEMBERS. ╘HEREFORE, TAKING POWER
  1037.   SUPPLY INHAND, ╔ PROCEEDED TO CUT ONE OPEN ON MY SHOP BANDSAW. ╔ DO
  1038.   NOT SUGGEST THAT YOU DO THIS. ╘HE PARTS ARE ╞╔╥═╠┘ AND ├╧═╨╠┼╘┼╠┘
  1039.   ENCASED IN A HARD PLASTIC POTTING COMPOUND. ╘HE PURPOSE OF THIS IS NOT
  1040.   TO MAKE THE ITEM DIFFICULT TO REPAIR, BUT TO MAKE THE ENTIRE UNIT
  1041.   CONDUCTIVE TO THE HEAT GENERATED INSIDE. ╔ DOUBT THE WISEDOM OF
  1042.   POTTING THE FUSE AS WELL. ╚OWEVER, ├┬═ WAS PROBABLY THINKING OF THE
  1043.   NUMBER OF LITTLE FINGERS THAT COULD FIT INTO AN ACCESSABLE FUSE
  1044.   HOLDER. IF YOU WANT THE PUNCH LINE IT IS: THE FINAL CIRCUIT BOARD AND
  1045.   ITS COMPONETS ARE ABOUT THE SIZE OF A BOX OF MATCHES. ╘HIS INCLUDES
  1046.   THE BUILT-IN METAL HEAT SINK.
  1047.  
  1048.   ╞ROM THESE MINSCULE INNARDS ╔ TRACED OUT THE CIRCUIT AND INCREASED THE
  1049.   SIZE OF ┴╠╠ COMPONENTS.
  1050.  
  1051.   ╘HE HANDIEST SOURCE OF ELECTRONIC PARTS IS, OF COURSE, ╥ADIO ╙HACK.
  1052.   ┴LL BUT ONE PART CAN BE PURCHASED THERE.
  1053.  
  1054.         212-1013        ├APACITOR, 35╓, 4700 M╞
  1055.         212-1022        ├APACITOR, 35╓, 10 U╞
  1056.         273-1515        ╘RANSFORMER, 2 ┴MP, 9-0-9 ╓┴├
  1057.         276-1184        ╥ECTIFIER
  1058.  
  1059.         270- 742        ╞USE ┬LOCK
  1060.         270-1275        ╞USES
  1061.  
  1062.   ╬OTE THAT THERE ARE ONLY FIVE PARTS. ╘HE REST ARE FUSES, FUSE BLOCKS,
  1063.   HEAT SINKS, WIRE AND MISC. HARDWARE. ╬OTE ALSO THAT ╔ HAVE NOT LISTED
  1064.   ANY PLUGS AND CORDS. ╘HIS BECAUSE YOU CAN CLIP THE CORDS OFF OF BOTH
  1065.   SIDES OF YOUR DEFUNCT POWER SUPPLY. ╘HIS WILL SAVE YOU THE HASSLE OF
  1066.   WRIING THE ─╔╬ POWER PLUG CORRECTLY:
  1067.  
  1068.         ─╔╬ ╨╔╬ ╧╒╘                   ├╧╠╧╥
  1069.           PIN 6         9╓┴├            BLACK
  1070.           PIN 7         9╓┴├            BLACK
  1071.           PIN 5         +5 ╓OLTS        BLUE
  1072.           PIN 1,2,3     SHIELD, GND     ORANGE
  1073.  
  1074.   ╘HE PART THAT YOU CAN ╬╧╘ GET AT ╥ADIO ╙HACK IS THE POWER REGULATOR.
  1075.   ╘HIS PART WILL HAVE TO BE SCROUNGED UP FROM SOME LOCAL, BIG
  1076.   ELECTRONICS SUPPLY HOUSE:
  1077.  
  1078.         ╙╦ 9067    5 VOLT VOLTAGE REGULATOR, 3+ AMPS. (╔ PREFER THE 5 AMP.)
  1079.  
  1080.   ╥ADIO ╙HACK DOES CARRY REGULATORS, BUT THEIR CAPACITY IS NO LARGER
  1081.   THAN THAT WITH WHICH YOU STARTED.
  1082.  
  1083.   ╘HE ╚EAT SINKS, (YES, MORE THAN ONE!) ARE THE KEY TO THE SUCCESS OF
  1084.   THIS PROJECT. ╘HE ONES ╔ USED CAME FROM MY ═ODEL ╥AILROADING DAYS.
  1085.   ╙ORRY TO SAY, ╔ DID JUST AHVE THEM 'LYING ABOUT'. ╘HE HEAT SINKS THAT
  1086.   ╔ PRICED AT THE LOCAL ELECTRONICS SUPPLY WERE MORE COSTLY THAN THE
  1087.   OTHER PARTS. ╘HE WORST CASE SITUATION IS THAT YOU MAY NEED TO DRILL
  1088.   OUT A COUPLE PIECES OF ALUMINUM SHEET. ╘RY FOR 12 X 12, AND BEND THEM
  1089.   INTO SQUARE BOTTOMED ╒-SHAPES TO SAVE ROOM. HEAT SINKS SHOULD NOT
  1090.   TOUCH, OR BE ELECTRONICALLY GROUNDED TO EACH OTHER. ┘OU CAN ALSO MOUNT
  1091.   THEM ON STAND-OFFS FROM YOUR CHASSIS FOR TOTAL AIR CIRCULATION.
  1092.  
  1093.   ╘HE ╥ADIO ╙HACK TRANSFORMER IS RATED AT ONLY 2 AMPS. ╔F YOU CAN NOT
  1094.   FIND ONE WITH A HIGHER RATING ELSEWHERE, IT IS POSSIBLE TO HOOK TWO IN
  1095.   PARALLEL TO GET A 4 AMPERE OUTPUT. ╘HIS SI TRICKY, AS IT CAN BE DONE
  1096.   EITHER RIGHT OR WRONG!
  1097.  
  1098.   ╚ERE IS HOW TO DO IT THE RIGHT WAY:
  1099.     ╘APE OFF ONE YELLOW SECONDARY LEAD ON EACH TRANSFORMER. ╫ITH TAPE
  1100.     MARK THE FOUR REMAINING SECONDARY LEADS AND LETTER THEM ┴ AND ┬ ON
  1101.     ONE TRANSFORMER, ├ AND ─ ONTHE OTHER. ╚OOK UP THE BLACK PRIMARY
  1102.     LEADS TO A PLUG TO YOUR 120 WALL OUTLET:
  1103.  
  1104.                                     ▄-------------
  1105.    ╬OTE: *'S - INDICATE CONNECTIONS ▄            3 ▄▄
  1106.          +'S - INDICATE SKIP OVERS  ▄            3 ▄▄ (╘RANSFORMER)
  1107.                                     ▄            3 ▄▄
  1108.                                     ▄            3 ▄▄
  1109.                                     ▄   ----------
  1110.                                     ▄   ▄
  1111.           +--\  /-------------------*---+---------
  1112.         --▄120▄/                        ▄        3 ▄▄
  1113.         --▄╓LT▄             ____        ▄        3 ▄▄
  1114.          -▄╨LG▄------------▄╞╒╙┼▄-------*        3 ▄▄
  1115.           +--/              ----        ▄        3 ▄▄ (╘RANSFORMER)
  1116.                                         ▄---------
  1117.  
  1118.     ╘HIS WOULD NOW BE A GOOD TIME TO INSTALL A FUSE IN YOUR 120 ╓┴├
  1119.     LINE. ╬OW BEFORE PLUGGING THIS INTO THE WALL, TIE TWO OF THE
  1120.     SCONDARY LEADS (ONE FROM ┼┴├╚ TRANSFORMER) TOGETHER.
  1121.  
  1122.     ╙OMETHING LIKE THIS: ┴--╪FMR--┬+├--╪FMR--─
  1123.  
  1124.     ╨LUG IN YOUR 120╓ SIDE. ╬OW USING A ╓╧═ METER, MEASURE THE VOLTAGE
  1125.     BETWEEN ┴ AND ─.
  1126.       ╔F THE METER READS 18 VOLTS, THEN:
  1127.         1. UNPLUG FROM THE 120.
  1128.         2. TIE ┴ AND ├ TOGETHER. TIE ┬ AND ─ TOGETHER.
  1129.         3. YOUR 2 TRANSFORMERS WILL NOW GIVE YOU 9 VOLTS AT 4 AMPS.
  1130.       ╔F THE METER READS 0 VOLTS, THEN:
  1131.         1. UNPLUG FROM THE 120.
  1132.         2. TIE ┴ AND ─ TOGETHER. ╘IE ┬ AND ├ TOGETHER.
  1133.         3. YOUR 2 TRANSFORMERS WILL NOW GIVE YOU 9 VOLTS AT 4 AMPS.
  1134.  
  1135.   ┬ELOW IS THE FILE CORRESPONDING TO THE FULL SCHEMATIC OF THE POWER SUPPLY.
  1136.   [┼D'S NOTE: IN ╟EO╨AINT FORMAT, CONVERTED BY CONVERT 2.5, THEN UUENCODED]. ┴S
  1137.   YOU CAN SEE IN THE PICTURE, ╔ USED ONLY ONE TRANSFORMER. ┬ECAUSE IT GOT HOT,
  1138.   ╔ EPOXIED A SMALL HEAT SINK TO IT. ╫HILE THIS SOLVED THE HEAT PROBLEM, IT DID
  1139.   NOT INCREASE THE CAPACITY OF THE TOTAL POWER SUPPLY.
  1140.  
  1141.   ╬OTE THAT ╔ USED FUSES ON ALL LINES.
  1142.  
  1143. -----------------------------------------------------------------------------
  1144. BEGIN 700 SCHEMATIC.
  1145. ═@╨─,<╓-╚96╒┴=&┼├╚*"@╚*"@╚└─&└0=8!╨8-,╤(└4%)'(&9╧<╞╒┴='1┼9"!'
  1146. ═14]3(&9╔;&4@5├$╬,└└├╞└└└└"└└└.└└0╪(└└$5╨<╓]╬($╒8+3@╨└*"@╚*└└
  1147. ═╒╚>-╒╚?(╞!┴┼└╚4"─└+╞└╓"@╚*"@╚*"@╚└@%└0┴6!└<,└"└└└└"""@┴30╘┴%
  1148. ═34%424.@╚*"@╚*"@└└└└└└└└└└└└$╨!"3$%35$52)╒,@0╘].5─525$52(%8╥
  1149. ═+├4$6└<╪"└└└└@╥╨#0╘].5─525*"@╚*"@╚*"@╚"╨2└└99└╤$&└10└└└└└
  1150. ═└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└#%;_____└└└.@└└6?__╞5
  1151. ═55╞:╩╩╞555╞:╩╩╞555╞:╩╩╞555╞:╩╩╞?__╞@└└7└└└/___\└└└└└└└-__[:└
  1152. ═└/┘__[╥#!╨$└└/__└└!086┼╬="!);6%╟92!6,2╪╤└└└└└└└└└└└└└└└└└└└└
  1153. ═└└└└└└└└└└└└9╓5╧4&%╔;╟0@("└@5├(╬,└└└└└└@*$')!═└"╩1*-(─"╔└(╘╟
  1154. ═0"#]/┘└%╩0"-)╘└@#!\@2$&╔└(╓╠7┌─└┴1&╔!╪40╩3^%%┌╟╤┴1:╔7╪4-╩:╥%
  1155. ═#*!└╩0╪@3╙&┬_┌4"╥0+╨)╠╟_╘└8@-$&╪4*╟)!═└-╚$.╔)┬!/,2"┴╨╦┴0╞*╓╠
  1156. ═7_└&(+╘\(($\8%!┴:0#_"@#_└3╨!>└)+└┼╠"/╨&╥└38!┬@%┌└38!├@(╟└/\└
  1157. ═_╨#_└/\└_╨#_└/\└_╨#_└/\└_╨#_└/\└_╨#_└/\└_╨#_└/\└_╨#_└/\└_╨#_
  1158. ═└/\└_╨#_└/\└_╨#_└/\└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└
  1159. ═└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└
  1160. ═└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└
  1161. ═└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└/\└
  1162. ═_╨#_└/\└_╨#_└/\└┼0└"/╥!%└└└└└└└└_╨"%└└,0_╤!$└└└└└└└└_╨"&└└+╪
  1163. ═"/\└_╨"┬└/^_╚;\└└"└@,!@,_╨╨810└└└└└└_╨└└"!└0,&#@_\#└0╨└└└└└└
  1164. ═_╨└└┴1└#\!└0╚└"("/\└_╨#*└└(@/╪8└└>#_└+└└└3"'(*@└└╞└╨┴┴"8└(@0
  1165. ═╚└"("/G